php - 关于API 使用 HTTP 状态码还是全部返回 200
我想大声告诉你
我想大声告诉你 2017-05-16 13:03:19
0
6
831

现在的项目api想用restful风格,然后目前的api接口返回规范:所有成功接口返回{status:200,msg:'',data:{}},出错接口返回{status:403,msg:'',data:{}},也就是只有200和403两种状态,我感觉不太对劲,搜了下网上的

    200 OK - [GET]:服务器成功返回用户请求的数据,该操作是幂等的(Idempotent)。
    201 CREATED - [POST/PUT/PATCH]:用户新建或修改数据成功。
    202 Accepted - [*]:表示一个请求已经进入后台排队(异步任务)
    204 NO CONTENT - [DELETE]:用户删除数据成功。
    400 INVALID REQUEST - [POST/PUT/PATCH]:用户发出的请求有错误,服务器没有进行新建或修改数据的操作,该操作是幂等的。
    401 Unauthorized - [*]:表示用户没有权限(令牌、用户名、密码错误)。
    403 Forbidden - [*] 表示用户得到授权(与401错误相对),但是访问是被禁止的。
    404 NOT FOUND - [*]:用户发出的请求针对的是不存在的记录,服务器没有进行操作,该操作是幂等的。
    406 Not Acceptable - [GET]:用户请求的格式不可得(比如用户请求JSON格式,但是只有XML格式)。
    410 Gone -[GET]:用户请求的资源被永久删除,且不会再得到的。
    422 Unprocesable entity - [POST/PUT/PATCH] 当创建一个对象时,发生一个验证错误。
    500 INTERNAL SERVER ERROR - [*]:服务器发生错误,用户将无法判断发出的请求是否成功。

我是否是要按照这样的规范根据不同的情况去返回状态码?比如get请求成功返回200,post请求成功返回201?而不是只要成功就返回200?话说这些状态码真的是写在返回值里吗?不是应该http协议里自动判定的吗?或者在返回的header里修改?这里很迷糊,希望大神解惑!

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

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
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!