Отправляю запрос на сервер и в обработчике получаю данные из бд через sequelize
вот код фрагмента:
const products = {
getAll: async () => {
let goods = await Product.findAll({raw:true})
.catch(err => console.log(`DataBase Error ${err}`))
console.log(`goods`);
console.log(goods);
return goods;
},
В консоле вывыдит следующее:
spoiler
[nodemon] restarting due to changes...
[nodemon] starting `node --use-strict ./src/app.js`
Server listen on localhost:80
Executing (default): SELECT 1+1 AS result
Executing (default): SELECT "id", "title", "description", "price", "pathImage" FROM "products" AS "product";
app:db Connection has been established successfully. +0ms
goods
[
{
id: 1,
title: 'newItem',
description: 'testItem',
price: 100,
pathImage: null
}
]
При запросе браузер в консоль выводит следуюющее:
res =
appServiceData.js:10 {data: "", status: 204, statusText: "No Content", headers: {…}, config: {…}, …}
appServiceData.js:11 res.data =
????????????????????
Клиентский код:
spoiler
class AppServiceData {
async getResourse(url) {
const res = await axios.get(url);
console.log('res = ');
console.log(res);
console.log('res.data = ');
console.log(res.data);
return res.data;
};
async getProducts() {
let res = await this.getResourse('http://localhost/api/products');
return res;
};
};
Но если в return явно отправить какой-нибудь объект то все нормално
spoiler
res =
appServiceData.js:10 {data: "goods", status: 200, statusText: "OK", headers: {…}, config: {…}, …}
appServiceData.js:11 res.data =
appServiceData.js:12 goods
В чем может быть причина, почему no Content?
Edit:
Код сервера:
const path = require('path');
const Koa = require('koa');
const serve = require('koa-static');
const err = require('./middleware/error');
const router = require('./middleware/api/routes');
const debug = require('debug')('app');
const send = require('koa-send');
const staticDir = path.resolve(__dirname, '..', '..', 'public');
const app = new Koa();
app.use(err);
app.use(serve(staticDir));
app.use(router.routes());
app.use(router.allowedMethods());
app.use(async ctx => await send(ctx, 'index.html', { root: staticDir }));
app.listen(3000, () => {
console.log('Server listen on localhost:80');
});
Роутер:
const router = new Router();
const koaBody = convert(KoaBody());
//**products endpoints */
.post('/api/products', async ctx => {
ctx.body = await products.addProduct();
})
.get('/api/products', async ctx => {
ctx.body = await products.getAll();
})
Код ответа HTTP 204 No Content Success status показывает, что запрос выполнен успешно, но клиенту не нужно уходить со своей текущей страницы.
Это может быть использовано, например, при реализации функции «сохранить и продолжить редактирование» для вики-сайта. В этом случае запрос PUT будет использоваться для сохранения страницы, и будет отправлен ответ 204 No Content , чтобы указать, что редактор не должен быть заменен какой-либо другой страницей.
По умолчанию ответ 204 кэшируется ( заголовок ETag включен в такой ответ).
BNAME.RU » Код HTTP запроса 204 No Content
Что означает код 204 No Content?
Запрос обработан успешно, но возвращать данные не требуется. Также новая или обновленная информация может быть возвращена в ответе, но в итоге она не будет отличаться относительно того, что было первоначально отправлено на сервер и, таким образом, считается, что клиент уже имеет актуальную информацию. Если клиент является браузером, то он не должен изменять отображение документа, а его состояние до и после отправки запроса не должно изменяться. Этот статус ответа в основном используется для указания успешности запроса, поскольку данные и ракурс данных не должны изменяться, даже если (или с учетом) новая (обновленная информация) уже отображается в ракурсе документа. 204 — не должно содержать тело ответа. Если он есть, он обычно игнорируется, и одна пустая строка считается присутствующей после заголовков.
HTTP response status code 204 No Content is returned by the server to indicate that a HTTP request has been successfully completed, and there is no message body.
A 204 No Content response is cacheable by default and an ETag header is included in this case. If the default behavior needs to be overridden then the response must include the appropriate HTTP caching headers.
Usage
When the 204 No Content status code is received, it is in HTTP response to a HTTP operation such as a POST, PUT, or DELETE, where no message body is expected. In some instances, a server will instead return a 200 OK status code with no message body and a Content-Length specifier as 0.
An example of how this can be used is the result of a HTTP request generated by a user that presses a “Save» button on a form. The server commits the changes and relies on the client informing the user of success.
Depending on the operation, there are other more appropriate HTTP status codes that can be used to indicate there is no message body. For example, a conditional GET might return a 304 Not Modified status code to indicate that the resource does not have to be retrieved, and will not be present in the HTTP response.
Example
In the example, the client posts XML data to the server that defines a job to be complete. The server responds by acknowledging that the data was accepted and the job successfully completed. There is nothing significant to return to the client in the HTTP response, so the 204 No Content status code is appropriate.
Request
POST /job HTTP/1.1
Host: www.example.re
Content-Type: application/xml
Content-Length: 67
<?xml version="1.0">
<job>
<id>125</id>
<task>G01</task>
</job>
Response
HTTP/1.1 204 No Content
Code references
.NET
HttpStatusCode.NoContent
Rust
http::StatusCode::NO_CONTENT
Rails
:no_content
Go
http.StatusNoContent
Symfony
Response::HTTP_NO_CONTENT
Python3.5+
http.HTTPStatus.NO_CONTENT
Java
java.net.HttpURLConnection.HTTP_NO_CONTENT
Apache HttpComponents Core
org.apache.hc.core5.http.HttpStatus.SC_NO_CONTENT
Angular
@angular/common/http/HttpStatusCode.NoContent
Takeaway
HTTP response status code 204 No Content indicates that a HTTP request has been completed successfully, and any information being returned is in the HTTP headers. No message body will be present.
See also
- 304 Not Modified
- RFC 7231
Last updated: August 2, 2023
Код ответа:204Код успешного ответа:Сервер успешно обработал запрос, но в ответе были переданы только заголовки без тела сообщения.
Добрый день! Подскажите что это за ошибка и как с ней бороться? Спасибо за ответы!
Uniz
09.06.2015 15:34
ошибка в чем? в том что сервер ответил коректо 204?
или ошибка в том, что вместо 200, ответ идет 204?
мы о сайтах говорил или о почте?
скажем так, что бы ответить на ваш вопрос, входных данных вообще нет.
Uniz
09.06.2015 16:50
ок, тогда скрипт совершил какое то действие.
сервер его обработал и отдал 204 ответ.
т.е. сервер ответил коректно и верно, просто серверу данные небыли переданы.
значит косяк в скрипте.
скрипт забыл передать данные серверу или скрипт не отправляет данные серверу, а отправляет пустой запрос.
есть вариант при котором скрипт хочет получить от сервера ответ 204, что сервер и дает как ответ.
Код ответа 2хх, это не ошибки.
Обычно этот код используют для передачи метаданных в заголовках.
200 ок должна же по идее быть?
это означает не правильные мета теги?
Нет, почитайте внимательней о правилах работы HTTP протокола.
Ну или хотябы гляньте список кодов и их предназначение http://bit.ly/1vK0MjS
Если бы метаданные были не валидные, вернуло бы не 204.
Вы должны понимать что 204 код возвращает не сервер, а именно скрипт, т.е. это нормальное поведение, значит так задумано!
так а такой вопрос 204 — это надо устранять или оно само пройдет. Просто у меня сайт на юкозе там в шаблоне наверное что-то не так было. Начало выдавать 204 в индексации яндекса были видны только заголовки страниц. Поменял шаблон изменился на 200 но продлилось это месяца 3, яндекс проиндексировал и сами страницы с текстом. Сейчас снова появилась эта проблема непонятно от куда??? В веб мастере яндекса проблем никаких не показывает. Ну а ГУГЛУ все и так нравится и со старым и с новым шаблоном. Вывод мне кажется напрашивается один 204 — влияет только на ЯНДЕКС
у меня все само прошло через ап
ну сейчас такие редкие апы что уже месяц мозолит глаза это 204
раньше апа он не пропадет)))
а действительно ты был прав сегодня все прошло ))) самого удивило. Но все ровно интересно откуда оно (204) появляется.
