タグ付けされた質問 「rest」

REST(Representational State Transfer)は、World Wide Webなどの分散ハイパーメディアシステム用のソフトウェアアーキテクチャのスタイルです。異種システム間で統一されたインターフェースを持つことから生じるサーバーからのクライアントの本質的な分離により、SOAPなどのRPCアーキテクチャーに比べて人気が高まっています。

11
Powershell v3 Invoke-WebRequest HTTPSエラー
Powershell v3のInvoke-WebRequestとInvoke-RestMethodを使用するPOSTメソッドを正常に使用して、jsonファイルをhttpsウェブサイトに投稿しました。 私が使用しているコマンドは $cert=New-Object System.Security.Cryptography.X509Certificates.X509Certificate2("cert.crt") Invoke-WebRequest -Uri https://IPADDRESS/resource -Credential $cred -certificate $cert -Body $json -ContentType application/json -Method POST ただし、次のようなGETメソッドを使用しようとすると、 Invoke-WebRequest -Uri https://IPADDRESS/resource -Credential $cred -certificate $cert -Method GET 次のエラーが返されます Invoke-RestMethod : The underlying connection was closed: An unexpected error occurred on a send. At line:8 char:11 + $output = Invoke-RestMethod …
126 .net  rest  powershell  https 

7
応答コード200または201とコンテンツを含むPOSTを使用してリクエストを作成します
新しいデータ項目をシステムに追加することを目的としたRESTサービスを作成するとします。 にPOSTする予定です http://myhost/serviceX/someResources それが機能する場合、どの応答コードを使用する必要がありますか?そして、どんなコンテンツを返せますか。 私はHTTP応答コードの定義を調べており、これらの可能性を確認しています。 200:アクションの結果を説明または含むエンティティを返します。 201:CREATEDを意味します。意味*リクエストが満たされ、新しいリソースが作成されました。新しく作成されたリソースは、応答のエンティティで返されるURIで参照できます。リソースの最も具体的なURIは、Locationヘッダーフィールドで指定されます。レスポンスには、ユーザーまたはユーザーエージェントが最も適切なものを選択できるリソースの特性と場所のリストを含むエンティティを含める必要があります(SHOULD)。エンティティ形式は、Content-Typeヘッダーフィールドで指定されたメディアタイプによって指定されます。* 後者の方がHttp仕様に沿っているように思われますが、何が原因なのかまったくわかりません 応答には、リソースの特性と場所のリストを含むエンティティを含める必要があります(SHOULD)。 手段。 推奨事項?解釈?

8
Spring RestTemplateタイムアウト
Webアプリケーションで使用されるRESTサービスの接続タイムアウトを設定したいのですが。SpringのRestTemplateを使用してサービスと通信しています。私はいくつかの調査を行い、以下のxmlを見つけて使用しました(私のアプリケーションxml内)。これは、タイムアウトを設定するためのものです。Spring 3.0を使用しています。 RestTemplateを使用したSpring Webサービスのタイムアウト構成でも同じ問題が発生しましたが、ソリューションはそれほどきれいではないようです。Spring構成を介してタイムアウト値を設定することをお勧めします <bean id="RestOperations" class="org.springframework.web.client.RestTemplate"> <constructor-arg> <bean class="org.springframework.http.client.CommonsClientHttpRequestFactory"> <property name="readTimeout" value="${restURL.connectionTimeout}" /> </bean> </constructor-arg> </bean> readTimeoutを何に設定しても、次のようになります: ネットワークケーブルが切断されました: 約20秒待機し、次の例外を報告します: org.springframework.web.client.ResourceAccessException:I / Oエラー:ホストへのルートがありません:接続。ネストされた例外はjava.net.NoRouteToHostException:ホストへのルートがありません:接続 URLが正しくないため、404がRESTサービスによって返されました: 約10秒間待機し、次の例外を報告します: org.springframework.web.client.HttpClientErrorException:404 Not Found 私の要件では、タイムアウトを短くする必要があるため、これらを変更できるようにする必要があります。私が間違っていることについてのアイデアはありますか? どうもありがとう。

3
REST APIのベストプラクティス:クエリ文字列とリクエスト本文の引数
REST APIは、いくつかの場所で引数を持つことができます。 リクエストボディ -jsonボディ、またはその他のMIMEタイプの一部として では、クエリ文字列 -たとえば、/api/resource?p1=v1&p2=v2 URLパスの一部として -例/api/resource/v1/v2 上記の1と2の間で選択する場合のベストプラクティスと考慮事項は何ですか?ここで は2対3について説明します。
125 json  api  rest  http  query-string 

4
カスタムHTTP認証ヘッダー
カスタムデータをHTTP承認ヘッダーに配置することは許容できるかどうか疑問に思っていました。RESTful APIを設計しており、承認のカスタムメソッドを指定する方法が必要になる場合があります。例として、FIRE-TOKEN認証と呼びましょう。 このようなものが有効であり、仕様に従って許可されますか? Authorization: FIRE-TOKEN 0PN5J17HBGZHT7JJ3X82:frJIUN8DYpKDtOLCwo//yllqDzg= 2番目の文字列の最初の部分(「:」の前)はAPIキーで、2番目の部分はクエリ文字列のハッシュです。

7
jsonパラメータを使用したCurl GETリクエスト
次のように、cURLを介してコマンドプロンプトからリモートREST APIに「GET」リクエストを送信しようとしています。 curl -X GET -H "Content-type: application/json" -H "Accept: application/json" "http://server:5050/a/c/getName/{"param0":"pradeep"}" ただし、出力は返されません。ブラウザから直接URLにpingを実行しようとしましたが、応答を正常に取得できます。コマンドの何が問題なのか理解できません。 基本的に、curlを介した応答としてjsonデータを提供するリモートRESTサービスに「GET」リクエストを設定したいと思います。誰かが私にどんな過ちを犯しているか教えてもらえますか?さまざまな投稿を試しましたが、すべてがGETではなくPOSTリクエストについて話します。
124 json  rest  curl 

10
Spring Resttemplateの例外処理
以下はコードスニペットです。基本的に、エラーコードが200以外の場合に例外を伝播しようとしています。 ResponseEntity<Object> response = restTemplate.exchange(url.toString().replace("{version}", version), HttpMethod.POST, entity, Object.class); if(response.getStatusCode().value()!= 200){ logger.debug("Encountered Error while Calling API"); throw new ApplicationException(); } ただし、サーバーからの500応答の場合、例外が発生します org.springframework.web.client.HttpServerErrorException: 500 Internal Server Error at org.springframework.web.client.DefaultResponseErrorHandler.handleError(DefaultResponseErrorHandler.java:94) ~[spring-web-4.2.3.RELEASE.jar:4.2.3.RELEASE] 本当に残りのテンプレート交換メソッドをラップする必要がありますか?コードの目的は何でしょうか?

8
RESTful Webサービスが必要なのはなぜですか?
RESTfulなWebサービスについて学びます(CS修士課程プログラムの一部であるため、これを行う必要があると言ったほうがいいでしょう)。 私はウィキペディアでいくつかの情報を読んだり、Sun Developer NetworkでRESTに関する記事を読んだりしましたが、それは簡単な技術ではなく、RESTfulアプリを構築するための特別なフレームワークがあり、SOAP Webサービスやプログラマーは、SOAPをいつ使用し、RESTが優れたアプローチになる可能性があることを理解する必要があります。 数年前、SOAPは非常に人気があり(ファッショナブル?)、アイテム「SOAP」はすべての優れたCVに存在しなければならなかったことを覚えています。しかし実際には、それは非常にまれに使用され、非常に単純な目的を達成するために使用されました。 RESTはもう1つの「ファッションの最後の言葉」であるように見えます(または、RESTを実際に見たことがないので、私は完全に間違っている可能性があります)。 RESTを使用する必要があった理由と、RESTなしでは同じことができない理由(またはRESTなしで同じことを行うためにより多くの時間を費やす必要がある理由)をいくつか教えてください。 UPD:残念ながら、最初のコメントで私を驚かせるような具体的な議論はありません。RESTは素晴らしいテクノロジーだと私に思わせてください! 私はこのような答えを見たいのですが: 私は別の複雑なHelloWorldアプリケーションを開発していて、大量の/小さなデータを転送する必要があるので、同僚にRESTソリューションを提案しました。 - くそっ!ジョニー、このアプリの実装には必ずRESTを使用する必要があります。–はい、ビリー。RESTを使用できますが、SOAPを使用する方が適切です。HelloWorldアプリケーションの開発について何か知っているので、私を信じてください。–しかし、SOAPは前世紀の昔ながらのテクノロジーであり、より優れたテクノロジーを使用できます。–ビリー、RESTを試すために3日間を費やす準備ができていますか?SOAPを使用すると、2時間でこれを実行できます。– はい、SOAPを使用して他の同じセキュリティ/パフォーマンス/ /スケーラビリティ/その他を実現するために、さらに多くの時間を費やすと確信しています。これからは、HelloWorldアプリケーションをRESTでのみ開発するべきだと私は確信しています。

1
RESTful POSTメソッドでパラメーターにアクセスする方法
私のPOSTメソッドは次のようになります。 @POST @Consumes({"application/json"}) @Path("create/") public void create(String param1, String param2){ System.out.println("param1 = " + param1); System.out.println("param2 = " + param2); } NetbeansでJersey Clientを作成すると、postメソッドを呼び出すメソッドは次のようになります。 public void create(Object requestEntity){ webResource.path("create").type(MediaType.APPLICATION_JSON).post(requestEntity); } このテストを実行するとき: @Test public void hello(){ String json = "{param1=\"hello\",param2=\"hello2\"}"; this.client.create(json); } サーバーで次の出力が得られます。 INFO: param1 = {param1="hello",param2="hello2"} INFO: param2 = パラメータが正しい値を与えるために何を変更する必要がありますか?

3
REST APIトークンベースの認証
認証を必要とするREST APIを開発しています。認証自体はHTTPを介した外部のWebサービスを介して行われるため、認証サービスを繰り返し呼び出すことを避けるためにトークンをディスペンスすることを考えました。これは私の最初の質問に私をきちんともたらします: これは、クライアントが要求ごとにHTTP基本認証を使用することを要求し、サーバー側の認証サービスへの呼び出しをキャッシュすることよりも本当に良いですか? 基本認証ソリューションには、コンテンツのリクエストを開始する前にサーバーへの完全なラウンドトリップを必要としないという利点があります。トークンは潜在的にスコープがより柔軟である可能性があります(つまり、特定のリソースまたはアクションへの権限のみを付与する)ことができますが、OAuthコンテキストには私の単純なユースケースよりも適切と思われます。 現在、トークンは次のように取得されます。 curl -X POST localhost/token --data "api_key=81169d80... &verifier=2f5ae51a... &timestamp=1234567 &user=foo &pass=bar" api_key、timestampおよびverifierすべてのリクエストにより要求されています。「ベリファイア」は以下によって返されます。 sha1(timestamp + api_key + shared_secret) 私の意図は、既知の当事者からの通話のみを許可し、通話がそのまま再利用されるのを防ぐことです。 これで十分ですか?アンダーキル?やりすぎ? トークンを入手すると、クライアントはリソースを取得できます。 curl localhost/posts?api_key=81169d80... &verifier=81169d80... &token=9fUyas64... &timestamp=1234567 可能な限り単純な呼び出しの場合、これは恐ろしく冗長なもののようです。考えるとshared_secret(最低でも)に埋め込まれている羽目になるのiOSアプリケーション、私はそれが抽出できると仮定思われるから、これでも製品は、誤った安心感を越えて何ですか?

4
http DELETEを使用したリソースの削除
したがって、HttpのDELETE動詞がべき等であるとすると、次の要求を発行すると、2番目(または3番目、4番目など)に何が起こるでしょうか。 DELETE /person/123 初めてリソースが削除され、204(成功、コンテンツなし)が返されます。以降の呼び出しで204または404(見つかりません)を返す必要がありますか?
122 rest  http  http-delete 

7
1つのリクエストで複数のアイテムを作成するRESTfulな方法
注文を収集する小さなクライアントサーバープログラムに取り組んでいます。これを「REST(ful)」にしたい。 私がしたいのは: すべての注文ライン(製品と数量)を収集し、完全な注文をサーバーに送信します 現在、これを行うには2つのオプションがあります。 各注文明細をサーバーに送信します:POST qtyおよびproduct_id サーバーへのリクエストの数を制限したいので、実際にはこれをしたくありません。オプション2です。 すべてのオーダーラインを収集して、一度にサーバーに送信します。 オプション2を実装するにはどうすればよいですか?私が持っているいくつかのアイデアは次のとおりです。JSONオブジェクトですべてのオーダーラインをラップし、これをサーバーに送信するか、配列を使用してオーダーラインをポストします。 オプション2を実装するのは良いアイデアですか、それとも良い方法ですか? 良い習慣とは何ですか?
122 rest  post 

6
/ loginまたは/ registerリソースをRESTfulに設計しますか?
私はWebアプリを設計していたところ、自分のAPIをRESTful Webサービスとしてどのように設計するべきかについて考えるのをやめました。今のところ、私のURIのほとんどは汎用であり、さまざまなWebアプリに適用できます。 GET /logout // destroys session and redirects to / GET /login // gets the webpage that has the login form POST /login // authenticates credentials against database and either redirects home with a new session or redirects back to /login GET /register // gets the webpage that has …

4
Spring Bootでクエリパラメータを取得するにはどうすればよいですか?
Spring Bootを使用してプロジェクトを開発しています。GETリクエストを受け入れるコントローラーを持っています。 現在、次の種類のURLへのリクエストを受け付けています。 http:// localhost:8888 / user / data / 002 しかし、クエリパラメータを使用してリクエストを受け入れたい: http:// localhost:8888 / user?data = 002 これが私のコントローラーのコードです: @RequestMapping(value="/data/{itemid}", method = RequestMethod.GET) public @ResponseBody item getitem(@PathVariable("itemid") String itemid) { item i = itemDao.findOne(itemid); String itemname = i.getItemname(); String price = i.getPrice(); return i; }
121 java  rest  spring-boot 

9
SpringでREST APIのバージョン管理を行う方法は?
Spring 3.2.xを使用してREST APIバージョンを管理する方法を検索してきましたが、メンテナンスが簡単なものは見つかりませんでした。最初に私が抱えている問題を説明し、次に解決策を説明します...しかし、ここで車輪を再発明するのかどうか疑問に思います。 Acceptヘッダーに基づいてバージョンを管理したいと思います。たとえば、リクエストにAcceptヘッダーが含まれている場合、application/vnd.company.app-1.1+jsonSpring MVCがこれをこのバージョンを処理するメソッドに転送するようにします。また、APIのすべてのメソッドが同じリリースで変更されるわけではないので、各コントローラーに移動して、バージョン間で変更されていないハンドラーを変更する必要はありません。また、Springは既に呼び出すメソッドを検出しているため、コントローラー自体で使用するバージョンを判別するロジックは必要ありません(サービスロケーターを使用)。 ハンドラーがバージョン1.0で導入され、v1.7で変更されたバージョン1.0から1.8のAPIを取り上げたので、これを次のように処理します。コードがコントローラー内にあり、ヘッダーからバージョンを抽出できるコードがいくつかあると想像してください。(Springでは以下は無効です) @RequestMapping(...) @VersionRange(1.0,1.6) @ResponseBody public Object method1() { // so something return object; } @RequestMapping(...) //same Request mapping annotation @VersionRange(1.7) @ResponseBody public Object method2() { // so something return object; } 2つのメソッドに同じRequestMappingアノテーションがあり、Springがロードに失敗するため、これはSpring では不可能です。アイデアは、VersionRangeアノテーションがオープンまたはクローズドバージョン範囲を定義できるというものです。最初の方法はバージョン1.0から1.6まで有効ですが、2番目の方法はバージョン1.7以降(最新バージョン1.8を含む)で有効です。誰かがバージョン99.99に合格することを決めた場合、このアプローチはうまくいかないことを知っていますが、それは私が共存しても問題ありません。 さて、春はどのように機能するかを真剣にやり直さなければ上記は不可能なので、ハンドラーをリクエストに一致させる方法をいじくり回すこと、特に自分自身を書くことを考えていました ProducesRequestConditionでそこにバージョン範囲を持たせることを考えていました。例えば コード: @RequestMapping(..., produces = "application/vnd.company.app-[1.0-1.6]+json) @ResponseBody public Object method1() { …

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.