github.com/tickoalcantara12/micro/v3@v3.0.0-20221007104245-9d75b9bcbab9/service/api/resolver/resolver.go (about)

     1  // Copyright 2020 Asim Aslam
     2  //
     3  // Licensed under the Apache License, Version 2.0 (the "License");
     4  // you may not use this file except in compliance with the License.
     5  // You may obtain a copy of the License at
     6  //
     7  //     https://www.apache.org/licenses/LICENSE-2.0
     8  //
     9  // Unless required by applicable law or agreed to in writing, software
    10  // distributed under the License is distributed on an "AS IS" BASIS,
    11  // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    12  // See the License for the specific language governing permissions and
    13  // limitations under the License.
    14  //
    15  // Original source: github.com/micro/go-micro/v3/api/resolver/resolver.go
    16  
    17  // Package resolver resolves a http request to an endpoint
    18  package resolver
    19  
    20  import (
    21  	"errors"
    22  	"net/http"
    23  )
    24  
    25  var (
    26  	ErrNotFound    = errors.New("not found")
    27  	ErrInvalidPath = errors.New("invalid path")
    28  )
    29  
    30  // Resolver resolves requests to endpoints
    31  type Resolver interface {
    32  	Resolve(r *http.Request, opts ...ResolveOption) (*Endpoint, error)
    33  	String() string
    34  }
    35  
    36  // Endpoint is the endpoint for a http request
    37  type Endpoint struct {
    38  	// e.g greeter
    39  	Name string
    40  	// HTTP Host e.g example.com
    41  	Host string
    42  	// HTTP Methods e.g GET, POST
    43  	Method string
    44  	// HTTP Path e.g /greeter.
    45  	Path string
    46  	// Domain endpoint exists within
    47  	Domain string
    48  }