接口设计

简介: 接口设计

什么是接口(API):不同功能层之间的通信规则称为接口

参数


返回值


实现登录和注册:

let http = require('http');
let url = require('url');
let querystring = require('querystring');
let fs = require('fs');
let user = {
    admin: 123456
}
http.createServer((req, res) => {
    let path, get, post
    if (req.method == 'GET') {
        let { pathname, query } = url.parse(req.url, true);
        path = pathname;
        get = query;
        complete();
    } else if (req.method == 'POST') { 
        let arr = [];
        path = req.url;
        req.on('data', buffer => {
            arr.push(buffer)
        });
        req.on("end", () => {
            post = querystring.parse(Buffer.concat(arr).toString());
            complete();
        })
    }
    function complete() {
        if (path == '/login') {
            res.writeHead(200, {
                'Content-Type': 'text/plain;charset=utf-8'
            })
            let { username, password } = get;
            if (!user[username]) {
                res.end(JSON.stringify({
                    err: 1,
                    msg: '用户名不存在'
                }))
            } else if (user[username] != password) {
                res.writeHead(200, {
                    'Content-Type': 'text/plain;charset=utf-8'
                })
                res.end(JSON.stringify({
                    err: 1,
                    msg: '密码不正确'
                }))
            } else {
                res.end(JSON.stringify({
                    err: 0,
                    msg: '登陆成功'
                }))
            }
        } else if (path == '/reg') {
            res.writeHead(200, {
                'Content-Type': 'text/plain;charset=utf-8'
            });
            let { username, password } = post;
            if (user[username]) {
                res.end(JSON.stringify({
                    err: 1,
                    msg: '用户已经存在'
                }))
            } else {
                user[username] = password;
                res.end(JSON.stringify({
                    err: 0,
                    msg: '注册成功'
                }))
            }
        } else {
            fs.readFile(`www${path}`,(err,data)=> {
                if(err){
                    res.end('404');
                }else{
                    res.end(data);
                }
            })
        }
    }
}).listen(8080)


目录
相关文章
|
6月前
|
JSON 安全 API
11条军规,让你的接口设计无可挑剔
后端工程师需重视接口设计,提供清晰规范的接口文档以节省合作时间,避免纠纷。关键点包括:1) 接口名称应直观明了;2) 接口路径规整,能反映接口功能;3) 使用恰当的请求方式(GET, POST, PUT, PATCH, DELETE);4) 提供详细接口说明和示例;5) 实施接口版本管理,更新文档以适应变更;6) 明确请求头信息;7) 关注接口安全,进行参数加密和授权;8) 编写测试案例和错误码定义,方便调用者理解和测试。
252 0
11条军规,让你的接口设计无可挑剔
|
5月前
|
Java 数据处理
接口设计规范
接口设计规范
214 2
|
4月前
|
测试技术 API
接口设计原则与最佳实践指南
接口设计原则与最佳实践指南
|
6月前
|
SQL JSON API
接口设计的18条军规
本文介绍了接口设计的18条最佳实践,包括签名防止数据篡改、加密敏感信息、IP白名单增强安全性、限流保护服务、统一返回值结构、异常统一处理、请求日志记录、幂等性设计、限制请求记录条数、压力测试、异步处理、数据脱敏、完整接口文档、合理使用请求方式、利用请求头传递参数、设计批量操作接口和职责单一原则。这些规则旨在确保API接口的安全、稳定、高效和易于维护。
|
6月前
|
安全 前端开发 NoSQL
如果让你设计一个接口,你会考虑哪些问题?
接口设计需关注参数校验、扩展性、幂等性、日志、线程池隔离、异常重试、异步处理、查询优化、限流、安全性、锁粒度和避免长事务。入参与返回值校验确保数据正确性;考虑接口扩展性以适应不同业务需求;幂等设计防止重复操作;关键接口打印日志辅助问题排查;核心接口使用线程池隔离确保稳定性;异常处理中可采用重试机制,注意超时控制;适合异步的场景如用户注册后的通知;并行查询提升性能;限流保护接口,防止过载;配置黑白名单保障安全;适当控制锁粒度提高并发性能;避免长事务影响系统响应。
|
6月前
|
XML JSON API
前后端分离的接口设计规范
前后端分离的接口设计规范
软件设计原则-接口隔离原则讲解以及代码示例
接口隔离原则(Interface Segregation Principle,ISP)是面向对象设计中的一个原则,提倡使用多个专门的接口,而不使用单一的大接口。它最早由Robert C. Martin在其《敏捷软件开发:原则、模式与实践》一书中提出。 接口隔离原则的核心思想是:客户端不应该依赖于它不需要的接口。也就是说,一个类或模块不应该强迫它的用户去依赖无用的接口。相反,应该将大接口拆分成多个小接口,符合客户端的需求,使客户端只依赖于它真正需要的接口。 接口隔离原则的目标是降低类或模块之间的耦合度,提高代码的可维护性、可扩展性和可测试性。通过使用多个专门的接口,我们可以避免类或模块之间出现不
111 0
|
测试技术 数据库
软件设计原则-依赖倒置原则讲解以及代码示例
依赖倒置原则(Dependency Inversion Principle,DIP)是面向对象设计中的一个重要原则,由Robert C. Martin提出。 依赖倒置原则的核心思想是:高层模块不应该依赖于低层模块,二者都应该依赖于抽象。抽象不应该依赖于具体实现细节,而具体实现细节应该依赖于抽象。这意味着我们在进行系统设计时,应该尽量使用抽象类或接口来定义对象之间的依赖关系,而不是直接依赖于具体的实现类
420 0
|
缓存 算法 安全
这才叫 API 接口设计!
一家公司的每个系统都会有各种各样的接口,但是大部分公司,特别是传统行业的公司的所谓接口文档更多是当每个系传统的 word 文本格式,这种传统的格式有着人尽皆知的痛点: 1. 维护不及时; 2. 与代码不同步; 3. 归档后“便束之高阁”; 4. 接口文档跟代码没有互动; 5. 文本检索无法建立全局搜索,需要额外借助工具。 为了解决上述的问题,需要建立一套行之有效的接口管理体系,该体系的目标是: 1. 能够进行接口文档管理,作为后续的接口治理的其中一部分; 2. 能作为接口测试的平台,这样能保证接口跟代码是同步的; 3. 支持文本检索。
|
存储 JSON NoSQL