学习总结:WorkShop(一)

学习总结:WorkShop(一)

基于RestfulAPI的Service服务-Micro-Service to ingestion auto seller data

  • What is a /Workshop/?(2 min)
  • Rest API introduction (5 min)
  • Workshop demo Q & A.(10~15 min)
  • New requirement introduction and analysis (5 min)
  • Task separation (20 min)
  • Work out solution (20 min)
  • AML (20 min)
  • Pair programming (TDD?) (1 hour)
  • Docker & Deployment (30 min)
  • Free talk (30 min ~ 1 hour)</br>

    初入IT行业,承蒙老师(阿尔法二狗)指引,于17年6月10日在thoughtwork开始生涯中第一次Workshop,
    记录下学习心得,以备日后查看。新手上路,大佬们多多指教。

一、Workshop

Workshop最早的定义为,由几个人进行密集讨论的集会,通常需要当场练习,后续在IT行业广为
推广,为求“跳脱喧嚣、远离噪音、沉下心一起做一次深潜”为愿景。

二、Restful架构

1、概述

"互联网软件"采用客户端/服务器模式,建立在分布式体系上,通过互联网通信,具有高延时、
高并发等特点。网站开发,完全可以采用软件开发的模式。但是传统上,软件和网络是两个不同的领
域,很少有交集;软件开发主要针对单机环境,网络则主要研究系统之间的通信。互联网的兴起,使
得这两个领域开始融合,现在我们必须考虑,如何开发在互联网环境中使用的软件。

    RESTful架构,就是目前最流行的一种互联网软件架构。它结构清晰、符合标准、易于理解、
 扩展方便,所以正得到越来越多网站的采用。(引用自:阮一峰博客“理解restful构架”)

REST(Representational State Transfer)如果一个架构符合REST原则,就称它为
RESTful架构。

      ps:Representational State Transfer 中,这里省略了主语Resource,State为资
 源的状态,Reset可以理解为用户在使用互联网软件的过程中,资源的状态的转化。(个人理解)

2、分类说明

1)资源(resource)

资源,即为网络上的具体信息。文字、图片、音频等等都可以视为资源。每一种资源都有与之对应的
特定的URI,想要获取特定的资源,就要访问与之相对应的URI。
eg:Uri resource(/companies/{id}/employees/{id})

2)表述性(representational)

资源是一种信息,信息有各种各样不同的表述方式,具体的表述方式就是资源的表述性。

    eg:文本资源的表述性可以为:TXT,HTML,XML,JSON等。

3)状态转换(state transfer)

 互联网通信协议HTTP协议,是一个无状态协议。这意味着,所有的状态都保存在服务器端。因此,
 如果客户端想要操作服务器,必须通过某种手段,让服务器端发生"状态转化"(State Transfer)。
 而这种转化是建立在表现层之上的,所以就是"表现层状态转化"。
 (引用自:阮一峰博客“理解restful构架”)

具体来讲就是HTTP协议下常用的四种方法:GET(查找)、POST(新增)、PUT(更新)、DELETE(删除)

三、Service Demo Q&A

  • Q:阅读完全未接触过的代码时,使用什么方式可以快速的了解代码的架构。</br>
    A:对于Rest API架构的代码来说,可以通过Controller快速了解RestAPI构成,阅读modules可以快速
    的了解项目数据结构。

  • Q:Rest API架构的项目开发过程中,有哪些实用的工具。</br>
    A:

    1. Curl:curl是利用URL语法在命令行方式下工作的开源文件传输工具</br>
    2. postman:自带UI的Web开发工具,更加方便实用和测试</br>
    3. Raml:RAML的全称是RESTful API建模语言,这是一种基于YAML格式的新规范,人机都能很好的理解。
  • Q:测试代码的原理。</br>
    A: 设定好被测模块的运行目标,当测试代码得到该结果时,证明被测模块功能正常。

四、完整的项目开发模块和需求分析方法

1、项目开发模块

 Project{
    Coding{
        Dao
        Controller
        Service
        Model
        ...
    }
    Doc{}
    Test{
      UI AutoTest
      UnitTest{
          Junti
         ...
      }
    }
    Deploy{}
 }

2、需求分析方法

在收到客户需求后,一定不能直接根据大致的理解就进行项目的开发,这个时候的Coding大部分都是废品,
在理清需求之后大部分,甚至全部代码都需要返工,所有盲目的编写代码是项目开发中最大的忌讳,而与之
相对的,分析客户需求成了重中之重。</br></br>
首先,对需求进行分级,用户提出的需求作为最高等级。从最高等级的需求开始拆分,将需求尽量的细化成
一个一个有逻辑关联的单功能模块,便于分单元开发与测试。</br></br>
一般需求都会拆分两至三次,最低级的需求要求实现单一功能,设计好模块的输入和要求的输出。完成好最
低级需求的分析后才可开始按模块的进行开发。</br></br>
建议:开发与测试同步进行。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 177,305评论 25 709
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,302评论 19 139
  • 一说到REST,我想大家的第一反应就是“啊,就是那种前后台通信方式。”但是在要求详细讲述它所提出的各个约束,以及如...
    时待吾阅读 8,849评论 0 19
  • 小暑后遇见醉酒的孙大圣,是我那年所能想到的最美的事! 彼时的孙大圣茹毛饮血,毫无半点人的影子,也是凄苦风雨里,我的...
    一池深蓝阅读 1,459评论 1 2
  • 最新的UI要把navigationbar下边的黑线去掉 [self.navigationController.na...
    Json_z阅读 1,274评论 0 0

友情链接更多精彩内容