php - Berkenaan sama ada API menggunakan kod status HTTP atau mengembalikan semua 200
我想大声告诉你
我想大声告诉你 2017-05-16 13:03:19
0
6
878

API projek semasa ingin menggunakan gaya tenang dan antara muka API semasa mengembalikan spesifikasi: semua antara muka yang berjaya mengembalikan {status:200,msg:'',data:{}} dan antara muka ralat mengembalikan {status:403, msg: '',data:{}}, iaitu hanya terdapat dua status: 200 dan 403. Saya merasakan ada sesuatu yang tidak kena, jadi saya mencari dalam talian

 200 OK - [GET]: Pelayan berjaya mengembalikan data yang diminta oleh pengguna Operasi ini adalah idempoten.
    201 DIBUAT - [POST/PUT/PATCH]: Pengguna berjaya mencipta atau mengubah suai data.
    202 Diterima - [*]: Menunjukkan bahawa permintaan telah memasuki baris gilir latar belakang (tugas tak segerak)
    204 TIADA KANDUNGAN - [DELETE]: Pengguna berjaya memadamkan data.
    400 PERMINTAAN TIDAK SAH - [POST/PUT/PATCH]: Terdapat ralat dalam permintaan yang dikeluarkan oleh pengguna Pelayan tidak membuat atau mengubah suai data.
    401 Tanpa Kebenaran - [*]: Menunjukkan bahawa pengguna tidak mempunyai kebenaran (token, nama pengguna dan kata laluan adalah salah).
    403 Dilarang - [*] Menunjukkan bahawa pengguna diberi kuasa (berbanding dengan ralat 401), tetapi akses adalah dilarang.
    404 TIDAK DITEMUI - [*]: Permintaan yang dikeluarkan oleh pengguna adalah untuk rekod yang tidak wujud, dan pelayan tidak menjalankan operasi tersebut adalah idempoten.
    406 Tidak Boleh Diterima - [GET]: Format yang diminta oleh pengguna tidak tersedia (contohnya, pengguna meminta format JSON, tetapi hanya format XML).
    410 Hilang -[GET]: Sumber yang diminta oleh pengguna telah dipadamkan secara kekal dan tidak akan diperolehi lagi.
    422 Entiti tidak boleh diproses - [POST/PUT/PATCH] Ralat pengesahan berlaku semasa mencipta objek.
    500 RALAT PELAYAN DALAMAN - [*]: Ralat pelayan telah berlaku dan pengguna tidak akan dapat menentukan sama ada permintaan yang dibuat berjaya.

Adakah saya perlu mengikut spesifikasi ini untuk mengembalikan kod status mengikut situasi yang berbeza? Sebagai contoh, permintaan get mengembalikan 200 dengan jayanya, dan permintaan pos mengembalikan 201 dengan jayanya? Daripada hanya membalas 200 kejayaan? By the way, adakah kod status ini benar-benar ditulis dalam nilai pulangan? Bukankah ia sepatutnya ditentukan secara automatik dalam protokol http? Atau ubah suainya dalam pengepala yang dikembalikan? Ia sangat mengelirukan di sini, saya harap seseorang dapat menjelaskannya!

我想大声告诉你
我想大声告诉你

membalas semua(6)
巴扎黑

Terdapat dua kaedah
1.status_code semuanya 200, badan respons adalah seperti berikut:
Kejayaan成功

{
  errcode: 0,
  errmsg: null,
  data: obj // 数据主体
}

失败

{
  errcode: 1, // 具体错误代码
  errmsg: '账号错误',
}

2.根据不同的status_code处理(推荐)
成功(2xx),直接返回数据,不用额外包装

[]// 或者{}

失败(4xx,5xx)

{
  errcode: 1,
  errmsg: '账号或密码错误',
}
Gagal🎜 rrreee 🎜2. Proses mengikut status_code yang berbeza (disyorkan) 🎜Kejayaan (2xx), kembalikan data terus tanpa pembungkusan tambahan🎜 rrreee 🎜Gagal (4xx, 5xx), mengembalikan errcode dan errmsg🎜 rrreee
Ty80

{status:200,msg:'',data:{}} Ini sepatutnya hasil pulangan yang anda tulis dalam API Sebagai contoh, servlet mengembalikan rentetan json yang mengandungi 3 medan ini. Dalam erti kata lain, bahagian hadapan hanya boleh membaca maklumat ini apabila api anda berjaya kembali. Jika permintaan gagal dan tidak boleh dibaca, anda boleh cuba meminta URL yang salah dari bahagian hadapan

某草草

Malah, jika ia diseragamkan, ia harus dikembalikan seperti ini
header('HTTP/1.0 401 Unauthorized');
header('HTTP/1.0 403 Forbidden');

Namun, dalam situasi sebenar, ramai orang tidak akan begitu piawai.
Malah permintaan GET dan permintaan POST sedang dicampur, jadi bagaimana kita boleh bercakap tentang standard?

刘奇

Pada asalnya, ia harus dilakukan mengikut peraturan, tetapi pengendali telekomunikasi domestik mungkin merampas ubah hala. Sebagai contoh, jika anda mengembalikan 404, pengendali boleh mengubah hala anda ke tapak web navigasi mereka sendiri, yang akan memalukan.

过去多啦不再A梦

Data yang dikembalikan oleh antara muka anda dan respons http adalah dua perkara berbeza

Kod yang dikembalikan oleh antara muka telah ditetapkan Anda boleh menetapkannya mengikut kehendak anda

Maklumat yang anda semak ialah kod status respons http dan tiada kaitan dengan pemulangan daripada antara muka anda

習慣沉默

Kod ralat perniagaan 4xx
Kejayaan 200 - 204
Ralat sistem 5xx

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan