Cet article concerne le 21e jour du Calendrier de l'Avent Volare 2019.
Cette fois, j'ai créé l'API de l'application iOS pour la première fois. En partie parce que j'étudie, j'ai essayé de créer une API en utilisant le Django REST Framework, donc j'aimerais écrire à ce sujet: détendu: L'article sur le côté iOS de l'application créée est ici
La principale cible de la création d'applications est les étudiants vivant seuls comme nous: dark_sunglasses: Pour plus de détails sur la façon dont l'application a été choisie, Il est difficile de penser aux menus lors de la cuisson, mais les applications existantes recherchent en regardant ce qu'il y a dans le réfrigérateur. → La cible des existantes est pour les personnes
J'aime ça. J'ai trouvé pratique d'avoir une application qui présente automatiquement les menus en saisissant "Je n'aime pas"! → En gros, je ne fais pas grand-chose, je veux faire ce que j'aime à tout moment (il n'y a pas beaucoup d'ingrédients dans le réfrigérateur: fantôme :)
J'ai décidé de partir d'un tel point! (Si vous n'avez pas le même concept, faisons-en un: détendu :)
Ryu-chan, qui développe l'équipe ensemble, explique l'application. Cette fois, j'étais en charge de ce backend.
Dans le back-end, nous avons implémenté les 5 fonctions suivantes!
J'étais en charge de trois d'entre eux, donc j'écrirai sur cette partie!
from main.models import User, FoodConfigParam
from main.serializers import AuthSerializer
from rest_framework.generics import GenericAPIView
from rest_framework.exceptions import AuthenticationFailed
from rest_framework.response import Response
import random
from rest_framework_jwt.settings import api_settings
jwt_payload_handler = api_settings.JWT_PAYLOAD_HANDLER
jwt_encode_handler = api_settings.JWT_ENCODE_HANDLER
class RegisterAuthView(GenericAPIView):
permission_classes = ()
serializer_class = AuthSerializer
def post(self, request):
serializer = self.get_serializer(data=request.data)
serializer.is_valid(raise_exception=True)
#Renvoie le jeton si uuid est enregistré
if User.objects.filter(uuid=serializer.data['uuid']):
user = User.objects.get(uuid=serializer.data['uuid'])
payload = jwt_payload_handler(user)
return Response({
'token': jwt_encode_handler(payload),
})
user = User.objects.create_user(uuid=serializer.data['uuid'])
user.save()
if not user:
raise AuthenticationFailed()
payload = jwt_payload_handler(user)
#Ajouter des ingrédients par défaut lors de l'inscription en tant qu'utilisateur
user = User.objects.filter(uuid=serializer.data['uuid']).last()
food = FoodConfigParam()
food.create_defaultfood(user=user)
return Response({
'token': jwt_encode_handler(payload),
})
Nous vérifions s'il y a un utilisateur dans la base de données qui correspond à l'UUID envoyé, et sinon, nous créons un utilisateur.
from main.models import FoodConfigParam
from main.serializers import FoodConfigParamSerializer
from rest_framework.generics import GenericAPIView
from rest_framework.views import APIView
from rest_framework.response import Response
class UserFoodConfig(GenericAPIView):
queryset = FoodConfigParam.objects.all()
serializer_class = FoodConfigParamSerializer
def get(self, request):
foodConfigParams = FoodConfigParam.objects.filter(user=request.user)
serializer = FoodConfigParamSerializer(foodConfigParams, many=True)
return Response({'data': serializer.data})
def put(self, request):
res = []
for config in request.data['data']:
name = config['name']
rate = config['rate']
#Extraire ceux qui correspondent à l'utilisateur enregistré et au nom de l'ingrédient
foodConfigParam = FoodConfigParam.objects.get(user=request.user, name=name)
#Changement de probabilité
serializer = FoodConfigParamSerializer(foodConfigParam, data={'rate': rate}, partial=True)
serializer.is_valid(raise_exception=True)
serializer.save()
res.append(serializer.data)
return Response({'data': res})
Ceux qui correspondent à l'utilisateur et au nom de l'ingrédient sont extraits et le taux d'apparition est modifié.
L'API que j'ai créée ne fonctionnait pas bien ou fonctionnait, mais elle fonctionnait de manière inattendue lors de la connexion à iOS. Côté iOS, il semble qu'il y ait plusieurs choses comme éviter autant que possible d'écrire de la logique et réduire le nombre de communications, Je sentais que si je n'avais pas plus de connaissances sur la face avant, je ne pourrais pas communiquer et ce serait difficile ... J'ai consulté le côté iOS et j'ai continué tout en discutant de la facilité de le faire, et j'ai appris.
Cette fois, je faisais quelque chose qui fonctionne pour le moment, donc je ne comprends toujours pas RESTful: pleurer: J'ai donc décidé de connaître les bienfaits de django-rest-framework et d'étudier afin de pouvoir en tirer le meilleur parti. Merci d'avoir lu jusqu'au bout.
Recommended Posts