Как мне в данном запросе обработать ошибку с определенным статусом?

Ссылка скопирована
1 ответ

Функция

export function createHouse(project_id, name, coords, district, website) {     const token = localStorage.getItem('token')      const request_json = {         "name": name,         "coords": coords,         "district": district,         "website": website,     }      const response =  fetch('https://jsonplaceholder.typicode.com/postsf', {         method: 'POST',         headers: {             "Authorization": `Bearer ${token}`,             "Content-Type": 'application/json'         },         body: JSON.stringify(request_json),              }).then((res) => {         if(res.status == 404) {    console.log("error")         }     })           }

export function createHouse(project_id, name, coords, district, website) { const token = localStorage.getItem('token') const request_json = { "name": name, "coords": coords, "district": district, "website": website, } const response = fetch('https://jsonplaceholder.typicode.com/postsf', { method: 'POST', headers: { "Authorization": `Bearer ${token}`, "Content-Type": 'application/json' }, body: JSON.stringify(request_json), }).then((res) => { if(res.status == 404) { console.log("error") } }) }

Компонента в которую я экспортирую функцию

import { useEffect, useState } from "react" import { sendAuthRequest } from "./api"; import axios from "axios"; import { NavLink } from "react-router-dom"; import { createHouse } from "./api"; const Projects = () => {   const [name, setname] = useState();   const [coords, setcoords] = useState();   const [district, setdistrict] = useState();   const [website, setwebsite] = useState();     function click() {        createHouse(name, coords, district, website);     }     return (      <div>         <form>           <input value={name} onChange={e => { setname(e.target.value) }} type="text" className="login" />           <input value={coords} onChange={e => { setcoords(e.target.value) }} type="text" className="password" />           <input value={district} onChange={e => { setdistrict(e.target.value) }} type="text" className="login" />           <input value={website} onChange={e => { setwebsite(e.target.value) }} type="text" className="password" />           <button onClick={click} type="submit">Добавить</button>         </form>         <NavLink to="/"><button>назад</button></NavLink>      </div>     ) }  export default Projects

import { useEffect, useState } from "react" import { sendAuthRequest } from "./api"; import axios from "axios"; import { NavLink } from "react-router-dom"; import { createHouse } from "./api"; const Projects = () => { const [name, setname] = useState(); const [coords, setcoords] = useState(); const [district, setdistrict] = useState(); const [website, setwebsite] = useState(); function click() { createHouse(name, coords, district, website); } return ( <div> <form> <input value={name} onChange={e => { setname(e.target.value) }} type="text" className="login" /> <input value={coords} onChange={e => { setcoords(e.target.value) }} type="text" className="password" /> <input value={district} onChange={e => { setdistrict(e.target.value) }} type="text" className="login" /> <input value={website} onChange={e => { setwebsite(e.target.value) }} type="text" className="password" /> <button onClick={click} type="submit">Добавить</button> </form> <NavLink to="/"><button>назад</button></NavLink> </div> ) } export default Projects

Дополнительно:

}).then((res) => {         if(res.status == 404) {              console.log(res.errors) //  оно?         }     })

}).then((res) => { if(res.status == 404) { console.log(res.errors) // оно? } })

Ответы:

https://react.dev/reference/react-dom/components/form

Преврати свой createHouse в action для формы(подробнее - ссылка выше) и замени все useState на один useState для состояния ошибок.
setState ошибок используй в вышеупомянутом action

Нужно решить такую задачу?

Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

Заказать помощь
Лучший ответ
1
Игорь Волков Ответ

Для обработки ошибки с определенным статусом в вашем запросе, вам необходимо добавить соответствующий блок кода для обработки исключений. В языке программирования PHP это можно сделать с помощью конструкции try-catch.

Прежде всего, нужно определить, какой статус ошибки вас интересует. Например, если вам нужно обработать ошибку с HTTP статусом 404 (Not Found), ваш код может выглядеть следующим образом:

try {
    // ваш запрос или код, который может вызвать ошибку
} catch (Exception $e) {
    if ($e->getCode() == 404) {
        // обработка ошибки с HTTP статусом 404
        echo "Ошибка 404: страница не найдена";
    } else {
        // обработка других ошибок
        echo "Произошла ошибка: " . $e->getMessage();
    }
}

try { // ваш запрос или код, который может вызвать ошибку } catch (Exception $e) { if ($e->getCode() == 404) { // обработка ошибки с HTTP статусом 404 echo "Ошибка 404: страница не найдена"; } else { // обработка других ошибок echo "Произошла ошибка: " . $e->getMessage(); } }

В данном примере, мы оборачиваем код, который может вызвать ошибку, в блок try. Если происходит ошибка, она поймается блоком catch. Затем мы проверяем код ошибки с помощью метода getCode() объекта Exception. Если код ошибки равен 404, то выводим сообщение об ошибке "Ошибка 404: страница не найдена". В противном случае выводим общее сообщение об ошибке.

Помните, что код ошибки может быть разным в зависимости от используемой API или библиотеки, поэтому убедитесь, что вы правильно определили статус ошибки, с которым вам нужно работать.

Другие ответы (0)

Пока нет других ответов. Будьте первым, кто поможет автору.

Ответить на вопрос

комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вам также может быть интересно