2017-07-05 13 views
0

GoでREST APIを開発する際に、パスパラメータはどのように使用できますか? URIの形式は何になるのでしょうか?WebフレームワークなしのGOのURLのパスパラメータ

http://localhost:8765/myapp/{param1}/entries/{param2} 

私はルートを作成するには、このようなものを使用してみましたが、ハンドラ関数が呼び出さ取得されていません。

私はnet/httpパッケージのみを使用する予定であり、gorilla muxのような他のWebフレームワークは使用しないことに注意してください。

+1

[移動:http.Requestのパスパラメータを取得](https://stackoverflow.com/questions/34314975/go-get-path-parameters-from-http-request) – Tinwor

答えて

0

これは、gin-gonicのようなフレームワークを人々が使用する理由です。これは、net/httpパッケージIIUCでこれを行うのは簡単ではないためです。

それ以外の場合は、strings.Split(r.URL.Path, "/")が必要で、これらの要素から作業します。

+0

Ya、私はこれを持っていたゴリラMuxでダウン。しかし、標準のlibで、net/httpパッケージは私にそのような柔軟性を許すことができませんでした。私はあなたが上に示唆したように、文字列トリミングとURLパスの分割をしなければならなかった。ちょうど、これをstd libからの何かで行うための他の方法があるかどうかを確かめたいのです。私はGOに新しいです、私の無知を赦してください。私が得ることができなかったもう一つは、メソッドに基づいてハンドラを持つことでした。リクエストオブジェクトからmothodにアクセスする必要があります。 –

+0

心配はいりません。すべてのgolang Web開発者は同じ考えを持っていました。 ;) – hendry

1

私がする傾向があるのは、ネストされたハンドラです。 "/"はルートハンドラによって処理されます。これはパスの最初の部分をポップし、残りをreq.URL.Path(効果的にはStripPrefixのように振る舞います)に割り当て、どのハンドラがそのプレフィックスによってルートを処理しているかを判断し、適切なハンドラをチェーンします。そのハンドラがパスからIDを解析する必要がある場合、同じメカ音によって、パスの最初の部分をポップし、必要に応じて解析し、次に動作させることができます。

これは外部の依存関係はありませんが、ルーティングはダイナミックではなくハードコードされているため、ルーターよりも高速です。実行時にルーティングが変更されない限り(かなり珍しい)、ルーティングを動的に処理する必要はありません。

関連する問題