Интеграция приложений React с внутренним кодом с помощью API-интерфейса fetch.

Интеграция приложений React с внутренним кодом с помощью API-интерфейса fetch.

21 июня 2018 г.

Многие люди склонны путаться в том, как интегрировать свой внутренний код (Node-express, Python-flask и т. д.).

Чтобы решить эту проблему, лучше всего создать URL-адрес на сервере, который принимает данные в виде json с сервера, обрабатывает их и отвечает данными json, используя почтовый запрос.

Двумя распространенными методами являются GET и POST:

  • ПОЛУЧИТЬ— Запрашивает данные из указанного ресурса
  • ПОЧТА— Отправляет данные для обработки на указанный ресурс

Но есть некоторые ограничения для запросов GET:

  • GET-запросы могут кэшироваться
  • GET-запросы остаются в истории браузера
  • Запросы GET можно добавить в закладки
  • Запросы GET никогда не должны использоваться при работе с конфиденциальными данными.
  • Запросы GET имеют ограничения по длине
  • Запросы GET следует использовать только для получения данных

Некоторые плюсы по POST-запросам:

  • POST-запросы никогда не кэшируются
  • POST-запросы не сохраняются в истории браузера
  • Запросы POST не могут быть добавлены в закладки
  • POST-запросы не имеют ограничений на длину данных

(Источник: https://www.w3schools.com/tags/ref_httpmethods.asp)

В запросе GET параметры отправляются в виде URL-адреса, что иногда вам не нужно. Например, у вас могут быть некоторые конфиденциальные данные, например, имя пользователя и пароль, которые необходимо скрыть при выполнении запроса, поэтому POST-запрос является лучшей альтернативой.

Кроме того, если вы хотите отправить данные, отличные от символов ASCII, запросы GET не очень удобны, однако в таких случаях лучше использовать POST.

Но мы также можем использовать GET, здесь для примера я использовал POST.

Базовая структура общения.

Для этого API выборки (https://facebook.github.io/react-native/docs/network.html), предоставленный react-native, приходит на помощь.

Он очень прост в использовании и может использоваться для выполнения всех видов запросов, GET, POST и т. д. Базовая структура запроса на выборку выглядит следующим образом:

fetch(' { method: 'POST', headers: { Accept: 'application/json', 'Content-Type': 'application/json', }, body: JSON.stringify({ firstParam: 'yourValue', secondParam: 'yourOtherValue', }), }).then((response) => response.json()) .then((responseJson) => { return responseJson.movies; }) .catch((error) => { console.error(error); });

Код выглядит следующим образом


Также не забудьте изменить имя кластера с «advance88» на имя вашего кластера в следующем коде.


import React, { Component } from 'react'; import { TouchableOpacity, View, ActivityIndicator, Text, Alert} from 'react-native'; export default class App extends Component { handlePress = async () => { fetch('[ { method: 'POST', headers: { 'Content-Type': 'application/json', }, body: JSON.stringify({ "type": "select", "args": { "table": "author", "columns": ["name"], "limit": "1" } })

}) .then((response) => response.json()) .then((responseJson) => { Alert.alert("Author name at 0th index: " + responseJson[0].name); }) .catch((error) => { console.error(error); }); } render(){ return( <View style={{paddingTop: 50, paddingLeft: 50 }}> <Text> Some other text </Text> <Text> Some other text </Text> <TouchableOpacity onPress={this.handlePress.bind(this)}> <Text style={{paddingTop: 50, paddingLeft: 50, color: '#FF0000'}}> Click me to see the name </Text> </TouchableOpacity>

</View> ); } }

Вот начальный экран:



При нажатии на текст:


Похожие записи

Добавить комментарий

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