React를 사용하지 않고 API 사용
컨텍스트
O código dessa aplicação está nesse link, o resultado final se encontra aqui.
Uma duvida muito comum quando se inicia no desenvolvimento web é como fazer aplicações o backend e o frontend se comunicarem. como que eu posso fazer minha aplicação react se comunicar com minha API ? Essas são as dúvidas que eu vou tentar responder brevemente com esse post.
코모?
A comunicação entre essas partes do sistema pode ser feita a partir do método http, que é um protocolo de comunicação onde através dele é possível a comunicação entre os diferentes pontos de um sistema. O protocolo Http possui métodos que são utilizados para diferentes finalidades, os principais são o GET e o POST, explicando de forma minima o GET teria a função de pegar dados do servidor enquanto o POST teria a função de transmitter dados para o servidor.
Como eu faço isso em uma aplicação React
O Código abaixo é uma função javascript que vai receber o nome de uma personagem e vai fazer uma requisição para para api retornar os personagens que chancem com aqueles nomes.
const fetchCharacters = async (charactersName) => {
const response = await fetch(`https://www.breakingbadapi.com/api/characters/?name=${charactersName}`);
const data = await response.json();
return data;
};
Na primeira linha há uma requisição é feita a requisição para o a rota api/characters/
passando o paraâmetro name
que vai receber o parâmetro da função, a constante response vai receber uma Promise de uma resposta http, para extrair os dados dessa resposta utilizamos na proxima linha o método .json()
que também é um Promise só que agora da resposta do servidor com o nome do personagem, apelido...
No caso da minha aplicação essa função é chamada ao enviar do formulário que pergunta o nome do personagem da seguinte forma:
const handleSubmit = async (e) => {
e.preventDefault();
const inputValue = e.target[0].value;
const charachtersData = await fetchCharacters(inputValue);
setCharacters(charachtersData);
};
<form onSubmit={handleSubmit}>
A primeira linha da função handleSubmit vai evitar que a página recarregue por conta do comportamento padrão do elemento form, o inputValue armazena o nome do personagem pesquisado, o charachtersData vai armazenar a resultado da função que foi apresentada anteriormente, e por último a reposta da api é definida como estado pelo setCharacters, agora é só exibir esseses Dados como queira.
Uma outra forma de fazer essa requisição é quando o componente é montado, digamos que você quer exibir as informações do Walter White enquanto o usuário não escolhe o personagem, você pode ter pensado em fazer da seguinte forma:
const SearchBar = () => {
cosnt [characters, setCharacters] = useState(null)
fetchCharacters('Walter White').then(data => {setCharacters(data)})
return (
<form>
{/*Componentes do formulário*/}
</form>
);
};
Se feito dessa forma, você vai ter um problema desse componente ser renderizado infinitamente pois, como ele atualiza o estado do componente, ele força que o componente remonte, e durante o processo de montagem ele vai novamente fazer a requisição e assim por diante.. .
Para fazer essa requisição enquanto o component monta é necessário utilizar o hook useEffect,/UTILIZANDO ARRAY DE DEPENDÊNCIAS/
const SearchBar = () => {
cosnt [characters, setCharacters] = useState(null)
useEffect(() => {
fetchCharacters('Walter White').then(data => {setCharacters(data)},[])
}, [])
return (
<form>
{/*Componentes do formulário*/}
</form>
);
};
Dessa forma toda vez que o componente SearchBar for montado a função fetchCharacters vai ser chamada e seu retorno passado para o setCharacters que vai modificar o estado.
http através do React의 형식으로 Essas são, a partir da montagem do componente ou através de um evento como o enviar do formulário.
Reference
이 문제에 관하여(React를 사용하지 않고 API 사용), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://dev.to/antoniel/consumindo-uma-api-no-react-2ea5
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
O código dessa aplicação está nesse link, o resultado final se encontra aqui.
A comunicação entre essas partes do sistema pode ser feita a partir do método http, que é um protocolo de comunicação onde através dele é possível a comunicação entre os diferentes pontos de um sistema. O protocolo Http possui métodos que são utilizados para diferentes finalidades, os principais são o GET e o POST, explicando de forma minima o GET teria a função de pegar dados do servidor enquanto o POST teria a função de transmitter dados para o servidor.
Como eu faço isso em uma aplicação React
O Código abaixo é uma função javascript que vai receber o nome de uma personagem e vai fazer uma requisição para para api retornar os personagens que chancem com aqueles nomes.
const fetchCharacters = async (charactersName) => {
const response = await fetch(`https://www.breakingbadapi.com/api/characters/?name=${charactersName}`);
const data = await response.json();
return data;
};
Na primeira linha há uma requisição é feita a requisição para o a rota api/characters/
passando o paraâmetro name
que vai receber o parâmetro da função, a constante response vai receber uma Promise de uma resposta http, para extrair os dados dessa resposta utilizamos na proxima linha o método .json()
que também é um Promise só que agora da resposta do servidor com o nome do personagem, apelido...
No caso da minha aplicação essa função é chamada ao enviar do formulário que pergunta o nome do personagem da seguinte forma:
const handleSubmit = async (e) => {
e.preventDefault();
const inputValue = e.target[0].value;
const charachtersData = await fetchCharacters(inputValue);
setCharacters(charachtersData);
};
<form onSubmit={handleSubmit}>
A primeira linha da função handleSubmit vai evitar que a página recarregue por conta do comportamento padrão do elemento form, o inputValue armazena o nome do personagem pesquisado, o charachtersData vai armazenar a resultado da função que foi apresentada anteriormente, e por último a reposta da api é definida como estado pelo setCharacters, agora é só exibir esseses Dados como queira.
Uma outra forma de fazer essa requisição é quando o componente é montado, digamos que você quer exibir as informações do Walter White enquanto o usuário não escolhe o personagem, você pode ter pensado em fazer da seguinte forma:
const SearchBar = () => {
cosnt [characters, setCharacters] = useState(null)
fetchCharacters('Walter White').then(data => {setCharacters(data)})
return (
<form>
{/*Componentes do formulário*/}
</form>
);
};
Se feito dessa forma, você vai ter um problema desse componente ser renderizado infinitamente pois, como ele atualiza o estado do componente, ele força que o componente remonte, e durante o processo de montagem ele vai novamente fazer a requisição e assim por diante.. .
Para fazer essa requisição enquanto o component monta é necessário utilizar o hook useEffect,/UTILIZANDO ARRAY DE DEPENDÊNCIAS/
const SearchBar = () => {
cosnt [characters, setCharacters] = useState(null)
useEffect(() => {
fetchCharacters('Walter White').then(data => {setCharacters(data)},[])
}, [])
return (
<form>
{/*Componentes do formulário*/}
</form>
);
};
Dessa forma toda vez que o componente SearchBar for montado a função fetchCharacters vai ser chamada e seu retorno passado para o setCharacters que vai modificar o estado.
http através do React의 형식으로 Essas são, a partir da montagem do componente ou através de um evento como o enviar do formulário.
Reference
이 문제에 관하여(React를 사용하지 않고 API 사용), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://dev.to/antoniel/consumindo-uma-api-no-react-2ea5
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
const fetchCharacters = async (charactersName) => {
const response = await fetch(`https://www.breakingbadapi.com/api/characters/?name=${charactersName}`);
const data = await response.json();
return data;
};
const handleSubmit = async (e) => {
e.preventDefault();
const inputValue = e.target[0].value;
const charachtersData = await fetchCharacters(inputValue);
setCharacters(charachtersData);
};
<form onSubmit={handleSubmit}>
const SearchBar = () => {
cosnt [characters, setCharacters] = useState(null)
fetchCharacters('Walter White').then(data => {setCharacters(data)})
return (
<form>
{/*Componentes do formulário*/}
</form>
);
};
const SearchBar = () => {
cosnt [characters, setCharacters] = useState(null)
useEffect(() => {
fetchCharacters('Walter White').then(data => {setCharacters(data)},[])
}, [])
return (
<form>
{/*Componentes do formulário*/}
</form>
);
};
Reference
이 문제에 관하여(React를 사용하지 않고 API 사용), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/antoniel/consumindo-uma-api-no-react-2ea5텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)