Web服务端开发需要考虑的问题

API设计

  1. 是否Restful。

    首先需要清楚,Restful是一种风格而不是规范,不存在必须遵守的问题。

    Restful本质上是对HTTP API进行有效的分类。

    分类是应该的,可以让API组织变得有序、层次清晰

  2. 一定要以Restful的风格分类吗?

    Restful风格的特点

    • url表示的只是资源,没有动作,所以只会出现名词,不会出现动词

      这样的url不对 /accounts/1/transfer/499

      应该是这样 /accounts/1/transactions/499

      想想传统的login、reset password在restful下要怎么办?

    • 动作用http method来表示

      针对CRUD,对应的语义分别是POST、GET、PATCH(PUT)、DELETE

      • GET、PUT、DELETE是幂等的,其余不是
      • PATCH表示部分更新
      • PUT的确切语义是CREATE OR REPLACE
    • 使用http状态码来表示基础的响应状态
      • 200 操作成功
      • 400 请求有问题;如:参数验证失败、签名验证失败等
      • 401 认证失败。
      • 403 无访问权限。
      • 409 请求处理完成但因为业务规则限制或其他原因并未真正成功的响应
      • 500 服务器错误
      • 503 服务器维护中
  3. 应有的支持
    • 版本化

      客户端必须明确知道自己调用的API版本。

      兼容性被破坏时+1 https://api.expample.com/v1/endpoint

      为了避免同时支持多版本API时,服务端消耗过多不必要的资源,应该以微服务的方式裁剪API,不同服务独立部署、迭代。

    • 业务编号

      https://api.expample.com/v1/biz/0

    • 资源包升级

      客户端不放资源包升级的逻辑,只发出升级请求,是否升级完全由服务端决定。

    • 强制升级

      特殊情况下要求客户端连主程序包括资源包都必须升级。

    • https

      可以使用自签名证书

  4. 数据查询DSL(?)

    允许客户端直接提交DSL文本,自行决定要查询一种或多种资源,查询多种资源时,支持JOIN,并且支持结果集过滤、排序。

    • DSL只读,结果集仅以二维表体现
    • url表示的资源只支持单个资源的读写
    • 批量资源的写操作使用业务编号
    • 需要特殊结构的数据使用数据集编号

应用设计

  1. 微服务

    从传统的monolithic风格到microservice,就好比原来是所有人一起搭一辆大巴前往目的地,现在改成三五成群,各自自驾前往。

    • 优势在于小规模独立部署及迭代,不必牵一发动全身,灵活
    • 未必会更方便、未必会降低成本,需要具体问题具体分析以及依赖具体实践
    • 开发工程微服务化及部署微服务化是两回事
  2. 使用spring mvc搭载应用

    把应用的依赖抽象成诸多service,可能包括且不限于:

    • session
    • cache
    • storage
    • relational db/orm
    • log
    • auth
    • httpclient
    • qrcode
    • image processing
    • config
    • queue
    • mail
    • sms
    • event
    • schedule
  3. 后台管理
    • cli

      面向运维及开发。

    • web

      面向业务及运营。

时间: 2024-08-28 09:13:47

Web服务端开发需要考虑的问题的相关文章

Web服务端开发需要考虑的问题(续)

方案汇总API设计应用架构代码库管理工具链工作计划目标预期关键过程service-driver接口定义及实现web样例 方案汇总 API设计 基于https. 只提供纯数据. 基于一开始提出的restful方案外,提出了读写分离方案如下. 相比restful,url可以表示动作,如下的url是允许的. /accounts/1/update http GET表示读操作,POST表示写操作 响应状态与restful方案相同 应用架构 API网关 一旦API规模扩大,再加上微服务的使用,路由分发.管理

Android服务端开发1-使用Eclipse搭建Java Web服务端

本篇博客介绍如何使用Eclipse来创建一个Java Web程序,为后面讲通过Android客户端跟服务端进行交互打下基础,关于服务端可以选用的程序很多,主流的搭配是Android客户端+PHP服务端,我们也可以使用Android客户端+Java EE服务端这样的搭配,就看公司是以哪种方式提供了. 创建一个Java Web程序,没有特别复杂的流程,我们先准备一下原材料: 1. Eclipse(注:这个不是ADT Bundle,最好到官网下载针对开发Java EE的IDE,如果可以的话,选中MyE

如何进行SuperMap iServer服务端开发

有时候在进行地图应用开发时,可能单纯的客户端无法满足要求(如功能和性能等因素),这时就需要进行iServer的服务端开发.SuperMap iServer 6R/7c的服务端开发步骤如下: 一.在Eclipse中新建一个Dynamic Web Project 此过程截图略去 二.引用iServer所需的各类jar包 经测试后发现,必须引用iServer/WEB-INF/lib下的所有jar包,否则运行时会出现一些奇怪的错误.这些jar包所在的位置为[iServer安装目录]\webapps\is

在线教学、视频会议软件 Webus Fox(2) 服务端开发手册

上次在<在线教学.视频会议软件 Webus Fox(1)文本.语音.视频聊天及电子白板基本用法>里介绍了软件的基本用法.本文主要介绍服务器端如何配置.开发. 1配置 1.1 IIS配置 Fox支持最基本的.net Framework4.0和IIS6/IIS7. 在IIS7中,对应应用程序池,需要配置为经典模式,支持.net4.0 1.2 web.config配置 Fox服务器端是暂时是host在IIS上,将来将Host在Windows Service上.对于IIS的配置,web.config是

如何提高Web服务端并发效率的异步编程技术

作为一名web工程师都希望自己做的web应用能被越来越多的人使用,如果我们所做的web应用随着用户的增多而宕机了,那么越来越多的人就会变得越来越少了,为了让我们的web应用能有更多人使用,我们就得提升web应用服务端的并发能力.那么我们如何做到这点了,根据现有的并发技术我们会有如下选择: 第一个做法:为每个客户端发送给服务端的请求都开启一个线程,等请求处理完毕后该线程就被销毁掉,这种做法很直观,但是在现代的web服务器里这种做法已经很少使用了,原因是新建一个线程,销毁一个线程的开销(开销是指占用

现代Java服务端开发核心技术栈

现代Java服务端开发核心技术栈 现代Java服务端开发核心技术 Java语言基础篇 互联网生态下的Java Java开发工具箱 Java基础项目搭建 Java数据存储 Java数据运算 Java程序流程控制 Java数组 Java面向对象程序设计 Java异常处理 Java枚举 Java注解 Java 泛型 Java集合 Java IO Java NIO Java操作数据库 Java日志 Java操作XML Java正则表达式 Java8新特性实战 Java9新特性实战 Java10新特性实战

现代Java服务端开发核心技术之开发工具箱

现代Java服务端开发核心技术之开发工具箱 现代Java服务端开发核心技术 2.1 开发工具概述 俗话说,工欲善其事必先利其器,掌握一些日常开中常用的工具软件能够大大提开发效率,工具本身的目的也是解放生产力.在安装各种软件时注意如果没有特殊需要不必使用最新版本,尤其是操作系统,例如当前(2018/10/12)最新版的macOS是10.14,但是运行在macOS之上的其他应用软件可能还没有及时做兼容新系统的版本,可能在系统升级之后无法正常使用,因此推荐在新系统正式推出半年后再升级最为稳妥. 而且软

个人公众号服务端开发Demo

公众号出来很久了,也可以个人申请.知道公众号的服务端开发其实很简单,接口调用封装,数据存取,不外如是. 人一旦懒了,真的是 "无可救药" 了...现简单描述晚到的公众号HelloWorld 思路 公众号里面简单的文章展示,静态博客展示这种好像没啥特别的,就跳过了. 在聊天框输入参数, 传到云服务器处理,然后请求个三方API获取信息,封装返回.嗯,这就算个基本的Demo了 准备 1, 得申请个公众号,个人的,免费 2, 最好买一台云服务器,双十一的阿里云最低100¥/Year,heihe

从架构师视角看是否该用Kotlin做服务端开发?

前言 自从Oracle收购Sun之后,对Java收费或加强控制的尝试从未间断,谷歌与Oracle围绕Java API的官司也跌宕起伏.虽然Oracle只是针对Oracle JDK8的升级收费,并释放了OpenJDK一直开源这份善意,但是如果没有各个大非Oracle的JVM.JDK和众多其它基于JVM的语言,Oracle这份善意能维持到什么时候可不好说. 大厂要从JVM和JDK的层面早做打算,而广大中小企业,就只能先从Java语言的层面,先找到Oracle以外的备胎.自从被谷歌钦定为Android