Restful API
画像ソース:https://www.cloudways.com/blog/comprehensive-introduction-rest-api/
Restful API?
Restful APIはAPIシステムを実現するアーキテクチャの中で最も広く使われているフォーマットである.
長所は自己表現力が強く、自分がどんな役を演じているのか一目で分かること.
Web上で使用される各種リソースをHTTP URIと表示し、その動作をHTTPと表示する
メソッドとして定義する方法.すなわち,リソース(HTTP URIと定義)を構造的に簡潔に表現する方法である.
基本的な背景知識 URI:サイト内の特定のリソースの場所を示す一意のアドレス(URIとURLの違い) HTTPメソッド:HTTPリクエストの所望の動作(GET、POST等) を定義する. Payload:HTTP要求サーバに送信データ(body) RESTful API設計ガイドライン
RESTful API設計において最も重要な2つの側面.
第一に、URIは情報のリソースを表示しなければならない.
第二に、リソースの挙動をHTTP法(GET、POST、PUT、DELETE)で表す.
せっけいルール URIは、情報を表すリソースを必要とする.(リソース名は動詞ではなく名詞を使用します) ユーザー/ユーザー、単数/複数の使用は会社によって異なります.現在、多くの人が復讐の傾向を使っています. signup、signin等は一般的に使用されることにより許可される.
リソースの挙動はHTTPメソッド(GET,POST,PUT,DELETEなど)として表現される.
resource間に関連がある場合は HTTP Method
GET:任意のリソースをクエリーするために使用
POST:任意のリソースを作成します.
PUT(PATCH):どのリソースを更新しますか.
DELETE:どのリソースを削除しますか.
ステータスコード
2XX Success
200 OK
サーバがクライアント要求を正常に処理するときに使用する応答コード
201 Created
サーバがクライアント要求を正常に処理し、新しいリソースがある場合に使用する応答コード.
(POST、PUTによるリソース作成)
204 No Content
クライアントの要求は正常ですが、コンテンツが提供されていない場合は応答コードが使用されます.
(DELETEによる削除操作)
4XX Client errors
400 Bad Request
クライアント要求が無効な場合に使用される応答コード
401 Unautorized(認証)
クライアントが無許可で保護されたリソースを要求するときに使用する応答コード.
(ログインしていないユーザがログインしている場合、要求可能なリソースが要求されます)
403 Forbidden(権限)
ユーザー認証ステータスにかかわらず、クライアントが応答したくないリソースを要求するための応答コード.
404 Not Found
クライアントが要求するリソースは存在しません.
405 Method Not Allowed
クライアント要求のリソースは、無効化メソッドで使用される応答コードを使用します.
ステータスコード
409 Conflict
クライアント・リクエストがサーバ・ステータスと競合した場合に使用されるレスポンス・コード
このリクエストを処理するときにビジネスロジックが実行できないか、矛盾が発生します.
5XX Server errors
5 XXステータスコードはサーバエラーにより要求を実行できないことを示す
path parameter & query parameter
どのリソースを識別するかはpathパラメータを使用します.
ソートやフィルタリングを行う場合はquery parameterを使用することが望ましい.
query parameterを使用する場合
サーチ時(Searching)、条件時(Filter) URLでは などの演算子を使用して、
整列時(Sorting)
ページ番号 は、通常、合計countを同時に送信します. Query parameter適用例
異なる種類の商品を展示したい場合(フィルタリング)
https://meetup.toast.com/posts/92
https://sanghaklee.tistory.com/61
Restful API?
Restful APIはAPIシステムを実現するアーキテクチャの中で最も広く使われているフォーマットである.
長所は自己表現力が強く、自分がどんな役を演じているのか一目で分かること.
Web上で使用される各種リソースをHTTP URIと表示し、その動作をHTTPと表示する
メソッドとして定義する方法.すなわち,リソース(HTTP URIと定義)を構造的に簡潔に表現する方法である.
基本的な背景知識
RESTful API設計において最も重要な2つの側面.
第一に、URIは情報のリソースを表示しなければならない.
第二に、リソースの挙動をHTTP法(GET、POST、PUT、DELETE)で表す.
せっけいルール
GET /users/show/1
->GET /users/1
リソースの挙動はHTTPメソッド(GET,POST,PUT,DELETEなど)として表現される.
GET delete/users/1
->DELETE /users/1
GET /members/insert/2
->POST /members/2
resource間に関連がある場合は
/리소스명/리소스ID/관계 있는 리소스
として表される.GET /users/{user_id}/profile
GET:任意のリソースをクエリーするために使用
POST:任意のリソースを作成します.
PUT(PATCH):どのリソースを更新しますか.
DELETE:どのリソースを削除しますか.
ステータスコード
2XX Success
200 OK
サーバがクライアント要求を正常に処理するときに使用する応答コード
201 Created
サーバがクライアント要求を正常に処理し、新しいリソースがある場合に使用する応答コード.
(POST、PUTによるリソース作成)
204 No Content
クライアントの要求は正常ですが、コンテンツが提供されていない場合は応答コードが使用されます.
(DELETEによる削除操作)
4XX Client errors
400 Bad Request
クライアント要求が無効な場合に使用される応答コード
401 Unautorized(認証)
クライアントが無許可で保護されたリソースを要求するときに使用する応答コード.
(ログインしていないユーザがログインしている場合、要求可能なリソースが要求されます)
403 Forbidden(権限)
ユーザー認証ステータスにかかわらず、クライアントが応答したくないリソースを要求するための応答コード.
404 Not Found
クライアントが要求するリソースは存在しません.
405 Method Not Allowed
クライアント要求のリソースは、無効化メソッドで使用される応答コードを使用します.
ステータスコード
409 Conflict
クライアント・リクエストがサーバ・ステータスと競合した場合に使用されるレスポンス・コード
このリクエストを処理するときにビジネスロジックが実行できないか、矛盾が発生します.
5XX Server errors
5 XXステータスコードはサーバエラーにより要求を実行できないことを示す
path parameter & query parameter
どのリソースを識別するかはpathパラメータを使用します.
ソートやフィルタリングを行う場合はquery parameterを使用することが望ましい.
query parameterを使用する場合
サーチ時(Searching)、条件時(Filter)
?category=1&color=1
&
がandかorかは判断できません.白論理で決める.>
、<
を表すことはできません.しかし、?price_bottom=3000
のように3000ウォン以上になる.整列時(Sorting)
?order='max_price'
ページ番号
?offset=0&limit=100
異なる種類の商品を展示したい場合(フィルタリング)
# product/views.py
class ProductView(View):
def get(self, request):
category = request.GET.get('category', None)
products = Product.objects.all()
if category:
products = Product.objects.filter(category=category)
product_list = [{
'id': product.id,
'name': product.name,
(...생략)
} for product in products
]
return JsonResponse({'data': product_list}, status=200)
# 프로젝트명/urls.py
from django.urls import path, include
urlpatterns = [
path('products', include('product.urls'))
]
# product/urls.py
from django.urls import path
from .views import ProductView
urlpatterns = [
path('', ProductView.as_view()),
]
# Httpie 통신
http -v GET 127.0.0.1:8000/products category==1
コメントサイトhttps://meetup.toast.com/posts/92
https://sanghaklee.tistory.com/61
Reference
この問題について(Restful API), 我々は、より多くの情報をここで見つけました https://velog.io/@suasue/Restful-APIテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol