如何解决POST vs PUT vs OPTIONS 等:哪种请求方法在语义上适合 MySQL 搜索不更改数据库?
POST vs PUT vs OPTIONS 等:哪种请求方法在语义上适合 MySQL 搜索(无需更改数据库) ,只从中获取信息)? 一开始我想使用GET方法,但是这里有一个大问题:GET不接受正文——但我需要将搜索参数传递给服务器! 一旦我为此目的使用了 GET 方法并将请求参数加入到 URL 后 '?'-sign(作为一个字符串,我使用 URLSearchParams 将我的查询对象转换为该字符串),并且它起作用了,但现在我使用内容类型“application/json”,这使得这种方式更加不方便(如果不是不可能的话),所以我需要我的请求有一个正文!
因此,我为此选择了 OPTIONS 方法:一个简单但可能是错误的逻辑——POST、PUT 和PATCH 从语义的角度来看不应该使用,因为我根本没有在服务器上做任何更改——只是在 mysql 数据库中执行一个无害的搜索(对来自 node js (express) 的 mysql 服务器并使用 mysql2 模块获取搜索结果); GET 不能使用,因为它忽略了请求体并且没有将它传递给服务器; 还剩下什么???
我的代码(我想这无关紧要,因为没有它,情况很清楚,但仍然如此):
-
前端:
function ajax(method,url,body,timeout=5000) { return new Promise((resolve,reject) => { const xhr = new XMLHttpRequest(); xhr.open(method,true); xhr.setRequestHeader('Content-type','application/json;charset=UTF-8'); xhr.onloadend = () => { if(xhr.status > 399) { reject(`${xhr.status} ${xhr.statusText}`); console.error(xhr); } else { resolve(xhr.response); } } xhr.timeout = timeout; xhr.ontimeout = () => { console.error(xhr); reject(`невдала спроба запиту на сервер (перевищено таймаут).`); }; xhr.onerror = () => { console.error(xhr) reject('невдала спроба запиту на сервер!') } xhr.send(JSON.stringify(body)); }); } ajax('OPTIONS',searchParamsObj);
-
后端(Node js、express):
app.options('/employeesPage',function(request,response) { // asynchronous request to a mysql DB with // *response.status(200).json(objectWithSearchResults);* // inside the callback of the last 'then' of the promise chain })
它工作正常,但是在这里使用 OPTIONS 在语义上合适吗?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。