Rumah > hujung hadapan web > tutorial js > Bagaimana untuk membuat antara muka API?

Bagaimana untuk membuat antara muka API?

Linda Hamilton
Lepaskan: 2024-12-09 12:28:15
asal
359 orang telah melayarinya

How to make an API interface?

API ialah antara muka pengaturcaraan aplikasi, ia boleh difahami sebagai saluran untuk berkomunikasi dengan sistem perisian yang berbeza. Ia pada asasnya adalah fungsi yang telah ditetapkan.

API mempunyai banyak bentuk, yang paling popular ialah menggunakan protokol HTTP untuk menyediakan perkhidmatan (seperti: RESTful), selagi ia memenuhi peraturan boleh digunakan seperti biasa. Pada masa kini, banyak perusahaan menggunakan API yang disediakan oleh pihak ketiga, dan juga menyediakan API untuk pihak ketiga, jadi reka bentuk API juga perlu berhati-hati.

Bagaimana untuk mereka bentuk antara muka API yang baik?

  1. Jelaskan Fungsi
    Pada permulaan reka bentuk, anda perlu menyusun fungsi API mengikut titik atau modul fungsi perniagaan untuk menjelaskan bahawa API anda perlu menyediakan.

  2. Kosongkan Logik Kod
    Pastikan kod anda kemas dan tambahkan ulasan yang diperlukan untuk memastikan antara muka mempunyai satu fungsi. Jika antara muka memerlukan logik perniagaan yang kompleks, adalah disyorkan untuk membahagikannya kepada berbilang antara muka atau merangkum fungsi ke dalam kaedah awam secara bebas untuk mengelakkan terlalu banyak kod dalam antara muka, yang tidak kondusif untuk penyelenggaraan dan lelaran kemudian.

  3. Jumlah Semakan Keselamatan yang Diperlukan
    Penyelesaian biasa ialah menggunakan tandatangan digital. Tambahkan tandatangan pada setiap permintaan HTTP dan bahagian pelayan mengesahkan kesahihan tandatangan untuk memastikan kesahihan permintaan.

  4. Membalak
    Pembalakan adalah penting untuk memudahkan penyetempatan masalah tepat pada masanya.

  5. Minimumkan Gandingan
    API yang baik hendaklah semudah mungkin. Jika gandingan perniagaan antara API terlalu tinggi, adalah mudah untuk menyebabkan pengecualian dalam kod tertentu, mengakibatkan ketiadaan API yang berkaitan. Jadi adalah lebih baik untuk mengelakkan kerumitan hubungan antara API sebanyak mungkin.

  6. Kembalikan Kod Status Bermakna
    Data kod status hendaklah dibawa dalam data pulangan API. Sebagai contoh, 200 bermakna permintaan adalah normal, 500 bermakna terdapat ralat dalaman dalam pelayan. Mengembalikan kod status biasa adalah baik untuk penyetempatan masalah.

  7. Dokumentasi Pembangunan
    Memandangkan API disediakan untuk kegunaan pihak ketiga atau dalaman, dokumentasi pembangunan adalah penting, jika tidak, ia tidak akan diketahui oleh orang lain cara menggunakannya.

Dokumentasi pembangunan API yang baik harus mengandungi elemen berikut:

  1. Penerangan model seni bina API, alatan dan versi pembangunan, kebergantungan sistem dan maklumat persekitaran lain.
  2. fungsi yang disediakan oleh API.
  3. Kebergantungan modul API.
  4. peraturan seruan, nota.
  5. nota penempatan, dsb.

Bagaimana untuk membangunkan antara muka API?

Jika berpuas hati dengan persekitaran pembangunan, mungkin kurang daripada 10 minit, anda boleh melengkapkan pembangunan antara muka API yang mudah (hanya demo).

Sebelum pembangunan, anda perlu memasang JDK, Maven dan IDE.

  1. Buat projek baharu berdasarkan Spring Boot. Untuk menyelesaikan dengan cepat, saya memilih untuk menggunakan (start.spring.io) untuk menjana projek saya. Melalui [Search dependencies to add] anda boleh memilih pakej. Saya hanya mengimport Spring MVC, jika anda perlu mengakses pangkalan data melalui Mybatis, anda juga boleh memilih di sini, kemudian klik untuk menjana projek.

  2. Nyahzip projek yang dimuat turun dan masukkan ke dalam IDE anda, kemudian untuk mencipta kelas baharu: com.wukong.apidemo.controller.ApiController.

  3. Tambahkan kaedah dalam kelas ini, penggunaan utama tag @RestController, @RequestMapping, @ResponseBody.

  4. Antara muka API yang paling mudah telah dilengkapkan. Kami boleh memulakan projek, mengakses alamat antara muka yang sepadan dan mendapatkan maklumat pemulangan antara muka.

  5. Kami boleh menggunakan swagger untuk membantu kami menjana dokumentasi antara muka dan mengoptimumkan antara muka API.

Cara yang lebih cekap untuk membuat antara muka API?

Kelalang Python dan Java Spring Boot boleh digunakan untuk mencipta antara muka API dengan cekap.

Spring Boot telah memudahkan proses pembangunan kepada yang mudah. Untuk python, saya mengesyorkan pakej pihak ketiga untuk membangunkan antara muka API: fastapi.

Ia adalah alat yang pantas dan cekap dengan ciri berikut:

  1. Pantas: setanding dengan NodeJS dan Go. Salah satu rangka kerja Python terpantas.
  2. Pengekodan pantas: meningkatkan kelajuan pembangunan kira-kira 200% hingga 300%.
  3. Ralat yang lebih sedikit: mengurangkan kira-kira 40% ralat yang disebabkan oleh pembangun.
  4. Mudah: mudah digunakan dan dipelajari. Kurangkan masa untuk membaca dokumentasi.
  5. Berasaskan piawai: berdasarkan dan serasi sepenuhnya dengan piawaian terbuka API.

Buat API RESTful dengan Python3 dan Flask(Perkhidmatan Pengujian Antara Muka dan Alat Mockserver)

Bina API RESTful nampaknya merupakan kerja pembangun, malah, terdapat banyak senario di mana pembangun ujian perlu membina API RESTful.

Sesetengah penguji akan membina API RESTful, merampas nama domain sebelah pelayan ke API mereka sendiri dan mengembalikan semua jenis pengecualian dengan tujuan untuk melihat kestabilan klien.

REST: REpresentational State Transfer
GET - /api/Category - Retrieve all categories
POST - /api/Category - Add a new category
PUT - /api/Category - Update a category
DELETE - /api/Category - Delete a category
GET - /api/Comment - Retrieve all the stored comments
POST - /api/Comment - Add new comment
Salin selepas log masuk
Salin selepas log masuk

Keperluan:python3.*,PostgreSQL.

REST: REpresentational State Transfer
GET - /api/Category - Retrieve all categories
POST - /api/Category - Add a new category
PUT - /api/Category - Update a category
DELETE - /api/Category - Delete a category
GET - /api/Comment - Retrieve all the stored comments
POST - /api/Comment - Add new comment
Salin selepas log masuk
Salin selepas log masuk

Requirements.txt seperti berikut:
Kelalang - rangka kerja mikro untuk python
Flask_restful - sambungan kepada flask untuk membina REST API dengan cepat.
Flask_script - menyediakan sokongan untuk menulis skrip luaran dalam flask.
Flask_migrate - gunakan apl Flask Alembic untuk pemindahan pangkalan data SQLAlchemy.
Marshmallow - untuk jenis data kompleks dan penukaran jenis data python.
Flask_sqlalchemy - sambungan flask yang menambah sokongan untuk SQLAlchemy.
Flask_marshmallow - lapisan tengah antara flask dan marshmallow.
Marshmallow-sqlalchemy - lapisan tengah antara sqlalchemy dan marshmallow.
psycopg - API PostgreSQL untuk python.

Pasang kebergantungan

project/
├── app.py
├── config.py
├── migrate.py
├── Model.py
├── requirements.txt
├── resources
│   └── Hello.py
│   └── Comment.py
│   └── Category.py
└── run.py
Salin selepas log masuk

Pasang dan Konfigurasi PostgreSQL(Ambil Ubuntu 16.04 sebagai contoh)

# pip3 install -r requirements.txt
Salin selepas log masuk

Tatarajah

# sudo apt-get update && sudo apt-get upgrade
# apt-get install postgresql postgresql-contrib
# su - postgres
$ createdb api
$ createuser andrew --pwprompt #Create User
$ psql -d api -c "ALTER USER andrew WITH PASSWORD 'api';"
Salin selepas log masuk

Mula Pantas

app.py

from flask import Blueprint
from flask_restful import Api
from resources.Hello import Hello
from resources.Category import CategoryResource
from resources.Comment import CommentResource


api_bp = Blueprint('api', __name__)
api = Api(api_bp)

# Routes
api.add_resource(Hello, '/Hello')
api.add_resource(CategoryResource, '/Category')
api.add_resource(CommentResource, '/Comment')
Salin selepas log masuk

sumber/Hello.py

from flask import Blueprint
from flask_restful import Api
from resources.Hello import Hello

api_bp = Blueprint('api', __name__)
api = Api(api_bp)

# Route
api.add_resource(Hello, '/Hello')
Salin selepas log masuk

run.py

#!/usr/bin/python
# -*- coding: utf-8 -*-
# Author:    xurongzhong#126.com wechat:pythontesting qq:37391319
# CreateDate: 2018-1-10

from flask_restful import Resource


class Hello(Resource):
    def get(self):
        return {"message": "Hello, World!"}

    def post(self):
        return {"message": "Hello, World!"}
Salin selepas log masuk

Memulakan perkhidmatan

from flask import Flask


def create_app(config_filename):
    app = Flask(__name__)
    app.config.from_object(config_filename)

    from app import api_bp
    app.register_blueprint(api_bp, url_prefix='/api')

    return app


if __name__ == "__main__":
    app = create_app("config")
    app.run(debug=True)
Salin selepas log masuk

Gunakan pelayar untuk melawati: http://127.0.0.1:5000/api/Hello

$ python3 run.py
 * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
 * Restarting with stat
 * Debugger is active!
 * Debugger PIN: 136-695-873
Salin selepas log masuk

Akses kepada pangkalan data

{
    "hello": "world"
}
Salin selepas log masuk

hijrah.py

from flask import Flask
from marshmallow import Schema, fields, pre_load, validate
from flask_marshmallow import Marshmallow
from flask_sqlalchemy import SQLAlchemy


ma = Marshmallow()
db = SQLAlchemy()


class Comment(db.Model):
    __tablename__ = 'comments'
    id = db.Column(db.Integer, primary_key=True)
    comment = db.Column(db.String(250), nullable=False)
    creation_date = db.Column(db.TIMESTAMP, server_default=db.func.current_timestamp(), nullable=False)
    category_id = db.Column(db.Integer, db.ForeignKey('categories.id', ondelete='CASCADE'), nullable=False)
    category = db.relationship('Category', backref=db.backref('comments', lazy='dynamic' ))

    def __init__(self, comment, category_id):
        self.comment = comment
        self.category_id = category_id


class Category(db.Model):
    __tablename__ = 'categories'
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(150), unique=True, nullable=False)

    def __init__(self, name):
        self.name = name


class CategorySchema(ma.Schema):
    id = fields.Integer()
    name = fields.String(required=True)


class CommentSchema(ma.Schema):
    id = fields.Integer(dump_only=True)
    category_id = fields.Integer(required=True)
    comment = fields.String(required=True, validate=validate.Length(1))
    creation_date = fields.DateTime()
Salin selepas log masuk

penghijrahan data

from flask_script import Manager
from flask_migrate import Migrate, MigrateCommand
from Model import db
from run import create_app

app = create_app('config')

migrate = Migrate(app, db)
manager = Manager(app)
manager.add_command('db', MigrateCommand)


if __name__ == '__main__':
    manager.run()
Salin selepas log masuk

Ujian
Anda boleh menggunakan curl, contohnya:

$ python3 migrate.py db init
$ python3 migrate.py db migrate
$ python migrate.py db upgrade
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimana untuk membuat antara muka API?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:dev.to
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan