J'ai essayé de lier le module Python pour Front et l'API créée par Spring Boot, je vais donc laisser une note du flux.
Le module Python utilise un framework Web appelé ** Pyramid **.
Envoyer une requête HTTP depuis le navigateur
↓
Recevoir en Python et faire une demande
↓
Envoyez une demande à l'API et recevez une réponse
↓
Traitez la réponse et affichez le fichier modèle sur le navigateur
Lancez le module Python pour recevoir la requête du navigateur Afin de recevoir la requête de Python, l'API est démarrée.
(env) username@host:~/dirname/PythonProject1$ pserve development.ini
Starting server in PID 6660.
Serving on http://0.0.0.0:50001
Saisissez l'URL suivante dans le navigateur.
http://0.0.0.0:50001/hotel/
context/view.config
Gérez le routage ici.
Lors de l'accès à / hotel
, le traitement de ** view_hotel_list ** de ** HotelListContext ** est lancé.
def set_detail_setting(config):
RootContext.set_child(
name='hotel',
factory=HotelListContext,
)
config.add_view(
context=HotelListContext,
view=context_as_view,
attr='view_hotel_list',
renderer='hotel/common/hotel/listHotel.jinja2',
request_method='GET',
name=''
)
context/list/list.py
Transmettez le processus à Executor, validez le résultat et traitez les données, puis transmettez le résultat.
class HotelListContext(HotelListBaseContext):
def view_hotel_list(self):
logger.info('Start search hotel result.')
list_executor = Executor(self.list_service)
list_form = self.validated_form(HotelSchema)
response = list_executor.execute_search_products(list_form.data)
logger.info(response)
return {
'data': {
'hotels': response['body']['items'],
'pagination': response['body']['pagination']
}
}
context/list/executor/__init__.py
Après avoir créé le JSON pour la demande, envoyez la demande à l'API. Renvoyez la réponse dans /context/list/list.py.
class HotelSearchListExecutor(object):
def __init__(self, service):
self.service = service
def execute_search_products(self, condition):
detail_condition = {
'header': executor_create_header_request(condition),
'body': {
'query': condition.get('query')
'searchBy': condition.get('searchBy'),
'pageNum': condition.get('pageNum'),
'sortBy': condition.get('pageNum'),
'sortOrder': condition.get('sortOrder')
}
}
return self.service.search_hotel(detail_condition)
listHotel_jinja2
Afficher le JSON transmis depuis /context/list/list.py dans jinja2
<!DOCTYPE html>
<html lang=
"en">
<head>
<title>Test page</title>
</head>
<body>
<table border=1>
<tr>
<td>id</td>
<td>name</td>
<td>cityCode</td>
</tr>
{% for item in data.hotels %}
<tr>
<td>{{ item.id }}</td>
<td>{{ item.name }}</td>
<td>{{ item.cityCode }}</td>
</tr>
{% endfor %}
</table>
</body>
</html>
development.ini
Définissez ici l'URL lors d'une demande à l'API
URL = http://localhost:8080/hotel/
executor_helper.py
context/list/executor/__init__.py
-> executor_create_header_request(condition)
Il s'agit d'un modèle d'en-tête de demande utilisé dans le processus ci-dessus.
def executor_create_header_request(condition):
return {
'languageCode': 'en',
'countryCode': 'US',
'currencyCode': 'USD'
}
schema/hotel/__init__.py
/context/list/list.py ⇒ self.validated_form(HotelSchema)
Ici, le processus de validation est effectué.
class HotelSchema(Schema):
allow_extra_fields = True
filter_extra_fields = True
query = validators.UnicodeString(not_empty=False, if_missing='')
sortBy = validators.UnicodeString(not_empty=False, if_missing='name')
pageNum = validators.UnicodeString(not_empty=False, if_missing='1')
sortOrder = validators.UnicodeString(not_empty=False, if_missing='ASC')
Les données de la base de données sont affichées sur l'écran du navigateur via l'API.
Il a été confirmé que le module Python et l'API pouvaient être liés.
Recommended Posts