ntakashiNicolas Takashi
من عاشق این هستم صحبت کنید و در مورد سیستم های توزیع شده ، رایانش ابری ، معماری ، مهندسی سیستم و API ها بنویسید.
من مدتی است که با Restful API کار می کنم اکنون و یک کاری که من دوست دارم انجام دهم این است که در مورد API صحبت کنم.
بنابراین ، امروز من به شما نحوه ساختن API با استفاده از رویکرد API-First و طراحی اول با OpenAPI را به شما نشان خواهم داد مشخصات.
اول از همه ، اگر نمی دانید رویکرد API-First به چه معناست ، خوب است که این مقاله را متوقف کرده و پست وبلاگی را که برای Farfetchs نوشتم بررسی کنید وبلاگی که در آن همه مواردی را که برای شروع یک API با استفاده از API-First باید بدانید توضیح می دهم.
? – آماده سازی زمین
قبل از اینکه دستان خود را کثیف کنید ، بیایید زمینه را آماده کنیم و مورد استفاده را که ایجاد خواهد شد درک کنیم. مثالهایی را که در اینجا نشان داده می شود ، تولید کنید ، به برخی از موارد زیر احتیاج دارید.
- NodeJS
- مشخصات OpenAPI
- ویرایشگر متن (من ‘ از VSCode استفاده خواهم کرد)
- خط فرمان
استفاده از پرونده
تی درک آن آسان است ، اجازه دهید از برنامه Todo List استفاده کنیم ، این یک مفهوم بسیار رایج فراتر از جامعه توسعه نرم افزار است.
رد مسئولیت
< p class = "paragraf"> برای آسان خواندن از پرونده های اصلی برخی از اطلاعات را پنهان می کنم ، اما در پایان این پست ، پیوند مخزن Github را به اشتراک می گذارم ، بنابراین می توانید به محتوای کامل دسترسی پیدا کنید.
? – دستان خود را کثیف کنید
اکنون که محیط خود را با وابستگی های مورد نیاز دارید ، بیایید کمی لذت ببریم و شروع به دیدن اتفاقات کنیم. < p class = "paragraf"> اولین قدم ایجاد فایل ورودی برای مشخصات OpenAPI و افزودن برخی مطالب به این پرونده است.
اطلاعات:
عنوان: Todo برنامه API
توضیحات: Todo برنامه API.
نسخه: v1
تماس:
ایمیل: ‘[email protected]’
نام: ‘Nicolas Takashi’
مسیرها:
# … در اینجا محتوای بیشتری وجود دارد.
پرونده بالا نمایشی بسیار ساده از یک سند OpenAPI است ، فقط به منظور معرفی شما با مفهوم. < / p>
OpenAPI یک علامت توضیحی است ، اما اگر هنوز نمی دانید چگونه این کار می کند ، توصیه می کنم برای پشتیبانی از شما در مراحل طراحی مشخصات از اسناد رسمی استفاده کنید.
نوشتن اشیاath مسیر
شی P مسیر مسیرهای نسبی به هر نقطه پایانی و عملکرد آنها را نگه می دارد ، بیایید فایلی به نام task.yaml به آن اضافه کنیم که باید به این شکل باشد.
operationId: دریافت وظایف
خلاصه: بازگشت a paged لیست وظایف .
توضیحات: بازگشت a paged لیست از فعال وظایف
برچسب ها:
– وظایف
پارامترها:
– $ ref: ‘../../parameters/page-parameters.yaml#/components/parameters/page’
– $ ref: ‘../../parameters/page-parameters.yaml#/components/parameters/pageSize “
پاسخ ها: ‘200’ :
توضیحات: موفقیت
محتوا: برنامه / json:
طرحواره: $ ref: ‘../../schemas/pagedTask.yaml#/components/schemas/PagedTask “
پست:
operationId: create-task
خلاصه: ایجاد یک کار
توضیحات: ایجاد جدید کار
برچسب ها:
– وظایف
درخواست بدنه:
لازم است: درست است
محتوا: برنامه / json:
طرحواره: $ ref: ‘../../schemas/task.yaml#/components/schemas/Task “
پاسخ ها: ‘201’ :
توضیحات: ایجاد شد
سرصفحه ها:
مکان:
توضیحات: “مکان کار / وظایف ایجاد شده / {id}”
طرحواره:
نوع: رشته
در بالا می بینید که دو عمل اضافه شده است ، Todo List API برای ایجاد یک کار و دریافت لیست صفحه ای از وظایف.
اکنون می توانیم با اضافه کردن این عملیات ، API را قادر به حذف یک کار ، پیدا کردن یک کار خاص و به روزرسانی وظیفه ، برای انجام این کار ما باید یک فایل جدید به نام task-with-id.yaml ایجاد کنیم و محتوای زیر را اضافه کنیم.
operationId: get-task
خلاصه: دریافت کار توسط شناسه
توضیحات: بازگشت یک کار
برچسب ها:
– وظایف
پارامترها:
– در: مسیر
نام: شناسه
توضیحات: وظیفه شناسه
لازم است: درست است
طرحواره:
نوع: رشته
قالب : uuid
پاسخ ها: ‘200’ :
توضیحات: موفقیت
محتوا: برنامه / json:
طرحواره: $ ref: ‘../../schemas/task.yaml#/components/schemas/Task “
قرار دادن:
operationId: update-task
خلاصه: به روزرسانی یک کار
توضیحات: به روزرسانی یک کار
برچسب ها:
– وظایف
پارامترها:
– در: مسیر
نام: شناسه
توضیحات: وظیفه شناسه
لازم است: درست است
طرحواره:
نوع: رشته
قالب : uuid
درخواست بدنه:
لازم است: درست است
محتوا: برنامه / json:
طرحواره: $ ref: ‘../../schemas/task.yaml#/components/schemas/Task “
پاسخ ها: ‘202’ :
توضیحات: خیر محتوا
حذف:
operationId: delete-task
خلاصه: حذف یک کار
توضیحات: حذف کار
برچسب ها:
– وظایف
پارامترها:
– در: مسیر
نام: شناسه
توضیحات: وظیفه شناسه
لازم است: درست است
طرحواره:
نوع: رشته
قالب : uuid
پاسخ ها: ‘202’ :
توضیحات: خیر محتوای
احتمالاً می توانید تقریباً همه چیز را درک کنید همانطور که در فایل بالا توضیح داده شده است ، اما من معتقدم که نماد $ ref شایسته توضیح است.
استفاده از منابع
در توسعه نرم افزار این است برای به اشتراک گذاشتن کد بسیار معمول است ، و همین امر هنگام طراحی API اتفاق می افتد. با در نظر داشتن مشخصات OpenAPI به ما امکان استفاده مجدد از اشیا common مشترک را در سراسر سند OpenAPI می دهد. به API ، همانطور که در مثالهای بالا مشاهده می کنید.
اگر می خواهید نحوه کار با منابع را بهتر بفهمید و از کجا می توانید از آن استفاده کنید ، لطفاً به مقام رسمی نگاهی بیندازید مستندات.
نوشتن طرحواره اشیا
ما از یک م scلفه طرحواره به نام Task استفاده می کنیم ، این طرح در سراسر API برای نشان دادن استفاده می شود وظایف منابع ، این طرح مانند نمونه زیر است.
م componentsلفه ها:
طرحواره ها:
وظیفه:
نوع: شی
لازم است:
– نام
– شناسه
خصوصیات:
شناسه:
توضیحات: وظیفه بی نظیر شناسه
نوع: رشته
قالب : uuid
فقط خواندنی: درست
نام:
توضیحات: وظیفه نام
نوع: رشته
مثال: Todo سرویس
با کد بالا می توانیم از طرح وظیفه در تمام API استفاده مجدد کرده و از تکثیر کد جلوگیری کنید.
نوشتن پارامتر شی
درست مانند طرحواره ها ، ما می توانیم همین کار را با پارامترها انجام دهیم ، اگر پارامترهایی وجود داشته باشد که در API به اشتراک گذاشته شده باشد ، می توانیم به یک پرونده محلی یا راه دور مراجعه کنیم ، در اینجا دو پارامتر برای نمایش اطلاعات مربوط به صفحه و اندازه آن ایجاد خواهیم کرد که باید مانند مثال زیر باشد. < div class = "code-container" readability = "9"> م componentsلفه ها: مولفه های: صفحه: در : پرس و جو توضیحات: صفحه دلخواه نام: صفحه طرح واره: نوع: عدد صحیح قالب: int32 پیش فرض : 1 حداقل: 1 اندازه صفحه: در : پرس و جو description: مقدار مورد نظر از در هر صفحه نام: pageSize طرح واره: نوع: عدد صحیح قالب: int32 پیش فرض : 10 حداقل: 10 حداکثر: 100
طرحواره ها:
وظیفه:
نوع: شی
لازم است:
– نام
– شناسه
خصوصیات:
شناسه:
توضیحات: وظیفه بی نظیر شناسه
نوع: رشته
قالب : uuid
فقط خواندنی: درست
نام:
توضیحات: وظیفه نام
نوع: رشته
مثال: Todo سرویس