Api có sử dụng php không?

Có thể nói nguyên lý REST và cấu trúc dữ liệu RESTful được biết đến rộng rãi trong giới lập trình web nói chung và lập trình ứng dụng nói riêng

Có thể nói bản thân REST không phải là một loại công nghệ. Nó là phương thức tạo API với nguyên lý tổ chức nhất định. Những nguyên lý này hướng dẫn lập trình viên tạo môi trường xử lý yêu cầu API được toàn diện

Để hiểu rõ hơn về RESTful API ta sẽ đi lần lượt như giải thích các khái niệm API, REST hay RESTful

RESTful API là gì?

RESTful API là một tiêu chuẩn được sử dụng trong thiết kế API cho các ứng dụng web ứng dụng [thiết kế dịch vụ web] để thuận tiện cho việc quản lý các tài nguyên. Nó quan trọng đối với hệ thống tài nguyên [tệp văn bản, ảnh, âm thanh, video hoặc dữ liệu động…], bao gồm các trạng thái tài nguyên được định dạng sẵn và được truyền tải qua HTTP

Xem thêm. các vị trí tuyển dụng lập trình API hấp dẫn tại Topdev

Diễn giải các thành phần

API [Giao diện lập trình ứng dụng] là một tập quy tắc và cơ chế mà theo đó, một ứng dụng hay một thành phần sẽ tương tác với một ứng dụng hay thành phần khác. API có thể trả về dữ liệu mà bạn cần chọn ứng dụng của mình ở những kiểu dữ liệu phổ biến như JSON hay XML

REST [Chuyển giao trạng thái đại diện] là một dạng chuyển đổi cấu trúc dữ liệu, một kiểu kiến ​​trúc để viết API. Nó sử dụng phương thức HTTP đơn giản để tạo giao tiếp giữa các máy. Vì vậy, thay vì sử dụng một URL để xử lý một số thông tin người dùng, REST gửi một yêu cầu HTTP như GET, POST, DELETE, v.v. đến một URL để xử lý dữ liệu

RESTful API là một tiêu chuẩn được sử dụng trong việc thiết kế các API cho các ứng dụng web để quản lý các tài nguyên. RESTful là một trong những kiểu thiết kế API được sử dụng phổ biến ngày nay để cho các ứng dụng [web, mobile…] khác nhau giao tiếp với nhau

Chức năng quan trọng nhất của REST là quy định cách sử dụng các phương thức HTTP [như GET, POST, PUT, DELETE…] và cách định dạng URL cho ứng dụng web để quản lý tài nguyên. RESTful không quy định mã logic ứng dụng và không giới hạn bởi ngôn ngữ lập trình ứng dụng, bất kỳ ngôn ngữ hoặc khuôn khổ nào cũng có thể sử dụng để thiết kế một API RESTful

RESTful active như thế nào?

REST hoạt động chủ yếu dựa trên giao thức HTTP. Các hoạt động cơ sở nêu trên sẽ sử dụng các phương thức HTTP riêng

  • NHẬN [CHỌN]. Trả về một tài nguyên hoặc một danh sách tài nguyên
  • ĐĂNG [TẠO]. Tạo một tài nguyên mới
  • ĐẶT [CẬP NHẬT]. Cập nhật thông tin cho tài nguyên
  • XÓA [XÓA]. Xoa một tài nguyên

Các phương thức hay hoạt động này thường được gọi là CRUD tương ứng với Tạo, Đọc, Cập nhật, Xóa – Tạo, Đọc, Sửa, Xóa

Hiện tại đa số lập trình viên viết RESTful API giờ đây đều chọn JSON là định dạng chính thức nhưng cũng có nhiều người chọn XML làm định dạng, nói chung sử dụng thế nào cũng được miễn phí và nhanh chóng

Xác thực và trả lại dữ liệu

API RESTful không sử dụng phiên và cookie, nó sử dụng một access_token cho mỗi yêu cầu. Dữ liệu trả về thường có cấu trúc như sau

{
    "data" : {
        "id": "1",
        "name": "TopDev"
    }
}

mã trạng thái

Khi chúng ta yêu cầu một API nào đó thông thường thì sẽ có một số mã trạng thái để nhận biết sau

  • 200 OK – Trả về thành công cho các phương thức GET, PUT, PATCH hoặc DELETE
  • 201 Created – Trả về khi một Resouce vừa được tạo thành công
  • 204 No Content – ​​Trả về khi xóa tài nguyên thành công
  • 304 Not Modified – Máy khách có thể sử dụng bộ đệm dữ liệu
  • 400 Yêu cầu không hợp lệ – Yêu cầu không hợp lệ
  • 401 Unauthorized – Yêu cầu cần có auth
  • 403 Forbidden – bị từ chối không cho phép
  • 404 Not Found – Không tìm thấy tài nguyên từ URI
  • 405 Method Not Allowed – Phương thức không cho phép đối với người dùng hiện tại
  • 410 Gone – Tài nguyên không còn tồn tại, Phiên bản cũ không còn hỗ trợ
  • 415 Loại phương tiện không được hỗ trợ – Loại tài nguyên này không được hỗ trợ
  • 422 Thực thể không thể xử lý – Dữ liệu không được xác thực
  • 429 Too Many Requests – Yêu cầu bị từ chối do bị giới hạn

Nên sử dụng Phiên bản

Phiên bản luôn sử dụng để khi bạn cần nâng cấp API mà vẫn hỗ trợ các API cũ

Xây dựng API với Laravel

Nhận việc xây dựng api trên Laravel để làm ví dụ, trước khi truy cập vào tổng quan về Http Request

Yêu cầu HTTP

Yêu cầu HTTP có tất cả 9 loại phương thức, 2 loại được sử dụng phổ biến nhất là GET và POST

  • LẤY. được sử dụng để lấy thông tin từ máy chủ theo URI đã cung cấp
  • CÁI ĐẦU. same with GET but response return no body, only has header
  • BƯU KIỆN. gửi thông tin tới máy chủ thông qua biểu mẫu http
  • ĐẶT. ghi đè tất cả thông tin của đối tượng với những gì được gửi lên
  • VÁ. ghi đè các thông tin đã được thay đổi của đối tượng
  • XÓA BỎ. xóa tài nguyên trên máy chủ
  • LIÊN KẾT. set up an connection to server by URI
  • TÙY CHỌN. mô tả các tùy chọn giao tiếp cho tài nguyên
  • DẤU VẾT. thực hiện vòng lặp bài kiểm tra – quay lại theo đường dẫn đến tài nguyên

Tuyến đường RESTful

Viết Api thì sẽ khai báo router vào file routes/api. php thay vì sử dụng tập tin routes/web. php. Cài đặt mặc định cho file

// Lấy list sản phẩm
Route::get['products', 'Api\ProductController@index']->name['products.index'];
// Lấy detail sản phẩm theo id
Route::get['products/{id}', 'Api\ProductController@show']->name['products.show'];
// Add sản phẩm
Route::post['products', 'Api\ProductController@store']->name['products.store'];
// Update info sản phẩm theo id
# Sử dụng put nếu update toàn bộ các field
Route::put['products/{id}', 'Api\ProductController@update']->name['products.update'];
# Sử dụng patch nếu update 1 vài field
Route::patch['products/{id}', 'Api\ProductController@update']->name['products.update'];
// Xóa sản phẩm theo id
Route::delete['products/{id}', 'Api\ProductController@destroy']->name['products.destroy'];
1 trong laravel

  • url. những route được khai báo trong file này mặc định có url tiền tố là api [ví dụ.
    // Lấy list sản phẩm
    Route::get['products', 'Api\ProductController@index']->name['products.index'];
    // Lấy detail sản phẩm theo id
    Route::get['products/{id}', 'Api\ProductController@show']->name['products.show'];
    // Add sản phẩm
    Route::post['products', 'Api\ProductController@store']->name['products.store'];
    // Update info sản phẩm theo id
    # Sử dụng put nếu update toàn bộ các field
    Route::put['products/{id}', 'Api\ProductController@update']->name['products.update'];
    # Sử dụng patch nếu update 1 vài field
    Route::patch['products/{id}', 'Api\ProductController@update']->name['products.update'];
    // Xóa sản phẩm theo id
    Route::delete['products/{id}', 'Api\ProductController@destroy']->name['products.destroy'];
    2]
  • Phần mềm trung gian. mặc định sẽ được gán Nhóm phần mềm trung gian là api, trong tệp
    // Lấy list sản phẩm
    Route::get['products', 'Api\ProductController@index']->name['products.index'];
    // Lấy detail sản phẩm theo id
    Route::get['products/{id}', 'Api\ProductController@show']->name['products.show'];
    // Add sản phẩm
    Route::post['products', 'Api\ProductController@store']->name['products.store'];
    // Update info sản phẩm theo id
    # Sử dụng put nếu update toàn bộ các field
    Route::put['products/{id}', 'Api\ProductController@update']->name['products.update'];
    # Sử dụng patch nếu update 1 vài field
    Route::patch['products/{id}', 'Api\ProductController@update']->name['products.update'];
    // Xóa sản phẩm theo id
    Route::delete['products/{id}', 'Api\ProductController@destroy']->name['products.destroy'];
    3 sẽ thấy 2 phần mềm trung gian thuộc Nhóm phần mềm trung gian. api là điều tiết [giới hạn yêu cầu / thời gian] và ràng buộc [mô hình ràng buộc]

Có thể tùy chỉnh giá trị mặc định này trong phương thức

// Lấy list sản phẩm
Route::get['products', 'Api\ProductController@index']->name['products.index'];
// Lấy detail sản phẩm theo id
Route::get['products/{id}', 'Api\ProductController@show']->name['products.show'];
// Add sản phẩm
Route::post['products', 'Api\ProductController@store']->name['products.store'];
// Update info sản phẩm theo id
# Sử dụng put nếu update toàn bộ các field
Route::put['products/{id}', 'Api\ProductController@update']->name['products.update'];
# Sử dụng patch nếu update 1 vài field
Route::patch['products/{id}', 'Api\ProductController@update']->name['products.update'];
// Xóa sản phẩm theo id
Route::delete['products/{id}', 'Api\ProductController@destroy']->name['products.destroy'];
4 trong tệp
// Lấy list sản phẩm
Route::get['products', 'Api\ProductController@index']->name['products.index'];
// Lấy detail sản phẩm theo id
Route::get['products/{id}', 'Api\ProductController@show']->name['products.show'];
// Add sản phẩm
Route::post['products', 'Api\ProductController@store']->name['products.store'];
// Update info sản phẩm theo id
# Sử dụng put nếu update toàn bộ các field
Route::put['products/{id}', 'Api\ProductController@update']->name['products.update'];
# Sử dụng patch nếu update 1 vài field
Route::patch['products/{id}', 'Api\ProductController@update']->name['products.update'];
// Xóa sản phẩm theo id
Route::delete['products/{id}', 'Api\ProductController@destroy']->name['products.destroy'];
5

Tạo các route để thực hiện các thao tác như

// Lấy list sản phẩm
Route::get['products', 'Api\ProductController@index']->name['products.index'];
// Lấy detail sản phẩm theo id
Route::get['products/{id}', 'Api\ProductController@show']->name['products.show'];
// Add sản phẩm
Route::post['products', 'Api\ProductController@store']->name['products.store'];
// Update info sản phẩm theo id
# Sử dụng put nếu update toàn bộ các field
Route::put['products/{id}', 'Api\ProductController@update']->name['products.update'];
# Sử dụng patch nếu update 1 vài field
Route::patch['products/{id}', 'Api\ProductController@update']->name['products.update'];
// Xóa sản phẩm theo id
Route::delete['products/{id}', 'Api\ProductController@destroy']->name['products.destroy'];
6

// Lấy list sản phẩm
Route::get['products', 'Api\ProductController@index']->name['products.index'];
// Lấy detail sản phẩm theo id
Route::get['products/{id}', 'Api\ProductController@show']->name['products.show'];
// Add sản phẩm
Route::post['products', 'Api\ProductController@store']->name['products.store'];
// Update info sản phẩm theo id
# Sử dụng put nếu update toàn bộ các field
Route::put['products/{id}', 'Api\ProductController@update']->name['products.update'];
# Sử dụng patch nếu update 1 vài field
Route::patch['products/{id}', 'Api\ProductController@update']->name['products.update'];
// Xóa sản phẩm theo id
Route::delete['products/{id}', 'Api\ProductController@destroy']->name['products.destroy'];

Mặc dù định tuyến đã được gán các ràng buộc phần mềm trung gian, nếu muốn sử dụng ràng buộc mô hình trong bộ điều khiển thì chúng ta sẽ sửa lại các tham số trong tuyến như sau

________số 8

Ngoài ra trong laravel còn hỗ trợ chúng ta 1 cách khai báo rút gọn hơn

//Nếu không muốn sử dụng toàn bộ method trong apiResource mọi người có thể chỉ định sử dụng 1 vài method bằng hàm only

Route::apiResource['products', 'Api\ProductController']->only[['index', 'show']];

//Hoặc nếu muốn loại bỏ đi 1 số method không dùng thì có thể sử dụng hàm except

Route::apiResource['products', 'Api\ProductController']->except[['show', 'update']];

Bộ điều khiển tài nguyên

Tương ứng với các Route RESTful đã được khai báo ở trên, đặc biệt nếu sử dụng phương thức

// Lấy list sản phẩm
Route::get['products', 'Api\ProductController@index']->name['products.index'];
// Lấy detail sản phẩm theo id
Route::get['products/{id}', 'Api\ProductController@show']->name['products.show'];
// Add sản phẩm
Route::post['products', 'Api\ProductController@store']->name['products.store'];
// Update info sản phẩm theo id
# Sử dụng put nếu update toàn bộ các field
Route::put['products/{id}', 'Api\ProductController@update']->name['products.update'];
# Sử dụng patch nếu update 1 vài field
Route::patch['products/{id}', 'Api\ProductController@update']->name['products.update'];
// Xóa sản phẩm theo id
Route::delete['products/{id}', 'Api\ProductController@destroy']->name['products.destroy'];
7 thì laravel cũng hỗ trợ các phương thức lí do tương ứng trong bộ điều khiển

Để tạo ra Bộ điều khiển tài nguyên, chúng ta chạy lệnh sau

// Lấy list sản phẩm
Route::get['products', 'Api\ProductController@index']->name['products.index'];
// Lấy detail sản phẩm theo id
Route::get['products/{id}', 'Api\ProductController@show']->name['products.show'];
// Add sản phẩm
Route::post['products', 'Api\ProductController@store']->name['products.store'];
// Update info sản phẩm theo id
# Sử dụng put nếu update toàn bộ các field
Route::put['products/{id}', 'Api\ProductController@update']->name['products.update'];
# Sử dụng patch nếu update 1 vài field
Route::patch['products/{id}', 'Api\ProductController@update']->name['products.update'];
// Xóa sản phẩm theo id
Route::delete['products/{id}', 'Api\ProductController@destroy']->name['products.destroy'];
8

// Lấy list sản phẩm
Route::get['products', 'Api\ProductController@index']->name['products.index'];
// Lấy detail sản phẩm theo id
Route::get['products/{id}', 'Api\ProductController@show']->name['products.show'];
// Add sản phẩm
Route::post['products', 'Api\ProductController@store']->name['products.store'];
// Update info sản phẩm theo id
# Sử dụng put nếu update toàn bộ các field
Route::put['products/{id}', 'Api\ProductController@update']->name['products.update'];
# Sử dụng patch nếu update 1 vài field
Route::patch['products/{id}', 'Api\ProductController@update']->name['products.update'];
// Xóa sản phẩm theo id
Route::delete['products/{id}', 'Api\ProductController@destroy']->name['products.destroy'];
2

Ngoài ra, nếu bạn muốn sử dụng liên kết mô hình khi tạo Bộ điều khiển tài nguyên, hãy sử dụng lệnh bên dưới

// Lấy list sản phẩm
Route::get['products', 'Api\ProductController@index']->name['products.index'];
// Lấy detail sản phẩm theo id
Route::get['products/{id}', 'Api\ProductController@show']->name['products.show'];
// Add sản phẩm
Route::post['products', 'Api\ProductController@store']->name['products.store'];
// Update info sản phẩm theo id
# Sử dụng put nếu update toàn bộ các field
Route::put['products/{id}', 'Api\ProductController@update']->name['products.update'];
# Sử dụng patch nếu update 1 vài field
Route::patch['products/{id}', 'Api\ProductController@update']->name['products.update'];
// Xóa sản phẩm theo id
Route::delete['products/{id}', 'Api\ProductController@destroy']->name['products.destroy'];
9

Tệp

Route::get['products/{product}', 'Api\ProductController@show']->name['products.show'];
Route::put['products/{product}', 'Api\ProductController@update']->name['products.update'];
Route::patch['products/{product}', 'Api\ProductController@update']->name['products.update'];
Route::delete['products/{product}', 'Api\ProductController@destroy']->name['products.destroy'];
0 được tạo ra sẽ như sau, chúng ta để ý tham số của các phương pháp
Route::get['products/{product}', 'Api\ProductController@show']->name['products.show'];
Route::put['products/{product}', 'Api\ProductController@update']->name['products.update'];
Route::patch['products/{product}', 'Api\ProductController@update']->name['products.update'];
Route::delete['products/{product}', 'Api\ProductController@destroy']->name['products.destroy'];
1,
Route::get['products/{product}', 'Api\ProductController@show']->name['products.show'];
Route::put['products/{product}', 'Api\ProductController@update']->name['products.update'];
Route::patch['products/{product}', 'Api\ProductController@update']->name['products.update'];
Route::delete['products/{product}', 'Api\ProductController@destroy']->name['products.destroy'];
2,
Route::get['products/{product}', 'Api\ProductController@show']->name['products.show'];
Route::put['products/{product}', 'Api\ProductController@update']->name['products.update'];
Route::patch['products/{product}', 'Api\ProductController@update']->name['products.update'];
Route::delete['products/{product}', 'Api\ProductController@destroy']->name['products.destroy'];
3 sẽ thay đổi 1 chút

// Lấy list sản phẩm
Route::get['products', 'Api\ProductController@index']->name['products.index'];
// Lấy detail sản phẩm theo id
Route::get['products/{id}', 'Api\ProductController@show']->name['products.show'];
// Add sản phẩm
Route::post['products', 'Api\ProductController@store']->name['products.store'];
// Update info sản phẩm theo id
# Sử dụng put nếu update toàn bộ các field
Route::put['products/{id}', 'Api\ProductController@update']->name['products.update'];
# Sử dụng patch nếu update 1 vài field
Route::patch['products/{id}', 'Api\ProductController@update']->name['products.update'];
// Xóa sản phẩm theo id
Route::delete['products/{id}', 'Api\ProductController@destroy']->name['products.destroy'];
8

Trình diễn 1 đoạn mã đơn giản trong bộ điều khiển kết hợp với liên kết mô hình và định tuyến apiResource khi xây dựng API

// Lấy list sản phẩm
Route::get['products', 'Api\ProductController@index']->name['products.index'];
// Lấy detail sản phẩm theo id
Route::get['products/{id}', 'Api\ProductController@show']->name['products.show'];
// Add sản phẩm
Route::post['products', 'Api\ProductController@store']->name['products.store'];
// Update info sản phẩm theo id
# Sử dụng put nếu update toàn bộ các field
Route::put['products/{id}', 'Api\ProductController@update']->name['products.update'];
# Sử dụng patch nếu update 1 vài field
Route::patch['products/{id}', 'Api\ProductController@update']->name['products.update'];
// Xóa sản phẩm theo id
Route::delete['products/{id}', 'Api\ProductController@destroy']->name['products.destroy'];
9

Mặc dù đã xác định khi sử dụng route

// Lấy list sản phẩm
Route::get['products', 'Api\ProductController@index']->name['products.index'];
// Lấy detail sản phẩm theo id
Route::get['products/{id}', 'Api\ProductController@show']->name['products.show'];
// Add sản phẩm
Route::post['products', 'Api\ProductController@store']->name['products.store'];
// Update info sản phẩm theo id
# Sử dụng put nếu update toàn bộ các field
Route::put['products/{id}', 'Api\ProductController@update']->name['products.update'];
# Sử dụng patch nếu update 1 vài field
Route::patch['products/{id}', 'Api\ProductController@update']->name['products.update'];
// Xóa sản phẩm theo id
Route::delete['products/{id}', 'Api\ProductController@destroy']->name['products.destroy'];
7 thì dữ liệu trả về sẽ tự động được chuyển sang kiểu JSON và sẽ có trạng thái tương ứng nên chỉ cần trả lại dữ liệu ra là được

Còn nếu muốn tùy biến trạng thái trả về thì có thể tham khảo phía dưới có sử dụng lớp

Route::get['products/{product}', 'Api\ProductController@show']->name['products.show'];
Route::put['products/{product}', 'Api\ProductController@update']->name['products.update'];
Route::patch['products/{product}', 'Api\ProductController@update']->name['products.update'];
Route::delete['products/{product}', 'Api\ProductController@destroy']->name['products.destroy'];
5 để lấy trạng thái thay vì sửa giá trị vào ví dụ như HTTP_OK tương ứng sẽ là 200

// Lấy list sản phẩm
Route::get['products', 'Api\ProductController@index']->name['products.index'];
// Lấy detail sản phẩm theo id
Route::get['products/{id}', 'Api\ProductController@show']->name['products.show'];
// Add sản phẩm
Route::post['products', 'Api\ProductController@store']->name['products.store'];
// Update info sản phẩm theo id
# Sử dụng put nếu update toàn bộ các field
Route::put['products/{id}', 'Api\ProductController@update']->name['products.update'];
# Sử dụng patch nếu update 1 vài field
Route::patch['products/{id}', 'Api\ProductController@update']->name['products.update'];
// Xóa sản phẩm theo id
Route::delete['products/{id}', 'Api\ProductController@destroy']->name['products.destroy'];
2

Khi xây dựng API, bạn có thể cần chuyển đổi dữ liệu từ bộ điều khiển trước khi trả lại cho người dùng ứng dụng của bạn, laravel cũng đã hỗ trợ điều này với Eloquent Resources

To make up 1 class convert them ta run command after

Route::get['products/{product}', 'Api\ProductController@show']->name['products.show'];
Route::put['products/{product}', 'Api\ProductController@update']->name['products.update'];
Route::patch['products/{product}', 'Api\ProductController@update']->name['products.update'];
Route::delete['products/{product}', 'Api\ProductController@destroy']->name['products.destroy'];
6

File

Route::get['products/{product}', 'Api\ProductController@show']->name['products.show'];
Route::put['products/{product}', 'Api\ProductController@update']->name['products.update'];
Route::patch['products/{product}', 'Api\ProductController@update']->name['products.update'];
Route::delete['products/{product}', 'Api\ProductController@destroy']->name['products.destroy'];
7 sẽ có nội dung như sau

// Lấy list sản phẩm
Route::get['products', 'Api\ProductController@index']->name['products.index'];
// Lấy detail sản phẩm theo id
Route::get['products/{id}', 'Api\ProductController@show']->name['products.show'];
// Add sản phẩm
Route::post['products', 'Api\ProductController@store']->name['products.store'];
// Update info sản phẩm theo id
# Sử dụng put nếu update toàn bộ các field
Route::put['products/{id}', 'Api\ProductController@update']->name['products.update'];
# Sử dụng patch nếu update 1 vài field
Route::patch['products/{id}', 'Api\ProductController@update']->name['products.update'];
// Xóa sản phẩm theo id
Route::delete['products/{id}', 'Api\ProductController@destroy']->name['products.destroy'];
5

Mình sẽ tùy chỉnh dữ liệu trả về chỉ có tên và giá

// Lấy list sản phẩm
Route::get['products', 'Api\ProductController@index']->name['products.index'];
// Lấy detail sản phẩm theo id
Route::get['products/{id}', 'Api\ProductController@show']->name['products.show'];
// Add sản phẩm
Route::post['products', 'Api\ProductController@store']->name['products.store'];
// Update info sản phẩm theo id
# Sử dụng put nếu update toàn bộ các field
Route::put['products/{id}', 'Api\ProductController@update']->name['products.update'];
# Sử dụng patch nếu update 1 vài field
Route::patch['products/{id}', 'Api\ProductController@update']->name['products.update'];
// Xóa sản phẩm theo id
Route::delete['products/{id}', 'Api\ProductController@destroy']->name['products.destroy'];
6

Ở bộ điều khiển thì mình sẽ sửa lại như sau

// Lấy list sản phẩm
Route::get['products', 'Api\ProductController@index']->name['products.index'];
// Lấy detail sản phẩm theo id
Route::get['products/{id}', 'Api\ProductController@show']->name['products.show'];
// Add sản phẩm
Route::post['products', 'Api\ProductController@store']->name['products.store'];
// Update info sản phẩm theo id
# Sử dụng put nếu update toàn bộ các field
Route::put['products/{id}', 'Api\ProductController@update']->name['products.update'];
# Sử dụng patch nếu update 1 vài field
Route::patch['products/{id}', 'Api\ProductController@update']->name['products.update'];
// Xóa sản phẩm theo id
Route::delete['products/{id}', 'Api\ProductController@destroy']->name['products.destroy'];
0

Ngoài giới hạn dữ liệu được trả về như tiêu đề hay giá cả, laravel còn hỗ trợ rất nhiều thứ như thêm quan hệ, dữ liệu…, mọi người đều có thể đọc thêm tài liệu trên Laravel

ủy quyền

Hiện tại có 3 cơ chế Ủy quyền chính

  • HTTP cơ bản
  • Mã thông báo web JSON [JWT]
  • OAuth2

Tùy thuộc vào dịch vụ của bạn, mà hãy chọn loại Ủy quyền có mức độ phù hợp, cố gắng giữ nó càng đơn giản càng tốt

Chính sách CORS

Viết API thì cũng cần chú ý về CORS là gì?

Tài liệu API

Ai cũng biết việc viết tài liệu API là cần thiết, tuy nhiên để có một tài liệu API hoàn chỉnh cũng tiêu tốn khá nhiều thời gian. Nhất là trong lúc dự kiến ​​rút tiền, mọi người thường chỉ dành cho tài liệu API ở mức siêu cơ bản. Tham khảo thêm cách viết Tài liệu API

Tài liệu API là một phần tương tự như Bài kiểm tra đơn vị vậy – lấy ngắn để nuôi dài

Nếu không được chăm chút kỹ lưỡng thì đến lúc bảo trì hay thay đổi thông số kỹ thuật thì hậu quả sẽ rất thảm khốc, dưới đây là một số lưu ý lúc viết docs

Chủ Đề