Server-kod. TDDD80 Mobila och sociala applikationer

Relevanta dokument
Introduktion till Git

Webbteknik II. Föreläsning 5. Restless farewell. John Häggerud, 2011

Webbteknik II. Föreläsning 4. Watching the river flow. John Häggerud, 2011

1 Vad är Versionshantering? 2 Git. 2.1 GitHub

WWW. Exempel på klientsidan. Överföring av en html-fil. Snyggare variant. Verkligt format. Meddelandeformat för begäran HTTP

Swedbank Mobile Loadtesting. LoadRunner Mobile App protocol

Versionshantering med Git

Att bygga enkel webbapplikation i Docker

Services + REST och OAuth

1ME323 Webbteknik 3 Lektion 6 API. Rune Körnefors. Medieteknik Rune Körnefors

Versionshantering med Git. Henrik Henriksson 17 april 2018

JavaScript in SharePoint and not just for Apps. Wictor Wilén

Introduktion till git

TDP013. Webbprogrammering och interaktivitet. AJAX, CORS & jquery. Marcus Bendtsen Institutionen för Datavetenskap (IDA)

Objektorienterad Programkonstruktion. Föreläsning 10 7 dec 2015

Statistik från webbplatser

Webbtjänster med API er

Introduktion Schenker-BTL AB, Stab IT Beskrivning över informationsintegreringmed Schenker, metodbeskrivning version 1.

Versionshantering. Problem som uppstår i större (samt även mindre) projekt:

JAVASCRIPT-POWERED LOADRUNNER CHRISTIAN GERDES PERFORMANCE ENGINEER LIGHTS IN LINE AB

Programutveckling med Java Development Kit. (JDK 1.1.x) och Programmers File Editor (PFE 7.02)

DRAFT. CVS kurs laboration 1 Checka in, ut och uppdatera. Marcus Rejås. 17 november 2002

TDP003 Projekt: Egna datormiljön

Översikt. Installation av EasyPHP 1. Ladda ner från Jag använder Release Installera EasyPHP.

Webbsidor och webbservrar

Installationsanvisningar VisiWeb. Ansvarig: Visi Closetalk AB Version: 2.3 Datum: Mottagare: Visi Web kund

Introduktion till integrering av Schenkers e-tjänster. Version 2.0

Webbservrar, severskript & webbproduktion

Uniform Resource Locator (URL) JavaServer Pages - JSP. Webbklienter. Webbserver. Hypertext Transfer Protocol (HTTP) HTTP Request

Grundläggande datavetenskap, 4p

Du skall naturligtvis visa körexempel med output där det behövs i din rapport!

Datasäkerhet och integritet

Modul 6 Webbsäkerhet

Alternativet är iwindows registret som ni hittar under regedit och Windows XP 32 bit.

Statistik från webbplatser

Webbteknik. Innehåll. Historisk återblick Teknisk beskrivning Märkspråk Standardisering Trender. En kort introduktion

Verktyg och Utvecklingsmiljö. Jochim von Hacht

INSTALLATION...3 ATT KOMMA IGÅNG...3 PROGRAMMETS DESIGN...4 LÄGGA TILL TABELL...4 EDITERA TABELL...4 EDITERA RELATION...5 SPARA OCH AVSLUTA...

Uppgiftskravstjänsten Teknisk anslutning för att hämta uppgiftskrav som öppna data. Version 1.0

Manuell installation av SQL Server 2008 R2 Express för SSF Timing

Voice over IP / SIP. Motivation for VoIP. Johan Garcia. Datakommunikation II. Baserat på material från Henning Schulzrinne, Columbia University.

Voice over IP / SIP. Switching Costs SIP. Motivation for VoIP. Internet Telephony as PBX replacement. Internet Telephony Modes.

GitHub for Windows och GitShell

Datakommunika,on på Internet

Versionshantering. Jan Erik Moström

TNMK30 - Elektronisk publicering

Laboration 2 RESTful webb-api

MVC med Javascript och Ajax. Filip Ekberg

Ladda upp filer fra n PLC till PC

Webbtjänster med API er

729G28. Webbprogrammering och databaser. Introduktion till webbutveckling med PHP. Jakob Pogulis Institutionen för Datavetenskap (IDA)

Verktyg och Utvecklingsmiljö. Föreläsning 2 Eclipse

TDDD80. Mobila och sociala applikationer Introduktion HTTP,SaaS. Anders Fröberg Institutionen för Datavetenskap (IDA)

SAS USER FORUM SWEDEN 2017 USER FORUM. SAS Viya och öppenhet en gemomgång av LUA-, Java-, Python- och REST-gränssnitten mot SAS Viya

ASP.NET MVC. Copyright Mahmud Al Hakim Innehåll

E-legitimationsnämndens legitimeringstjänster för test

Karlstads Universitet, Datavetenskap 1

Olika slags datornätverk. Föreläsning 5 Internet ARPANET, Internet började med ARPANET

Android översikt. TDDD80 Mobila och sociala applikationer

1ME323 Webbteknik 3 Lek0on 6 API. Rune Körnefors. Medieteknik Rune Körnefors rune.kornefors@lnu.se

Samsung NVR SRN-473S/873S/1673S Quick guide till web/app anslutning

PHP. Dynamiska webbsidor

Riktiga Vykort Partner App Teknisk beskrivning

Tenta i Grundläggande programmering DD klockan

Surfning. Webbklienter och webbservrar. Specialskrivna webbservrar. Kommunikation med sockets

Android fortsättning. TDDD80 Mobila och sociala applikationer

Skicka och hämta filer med automatik till och från Försäkringskassan

Labb 1: Vad, hur, och varför?

Hyperlänkar. I HTML skapar man en hyperlänk med taggen <a> </a>, som är en förkortning av ordet ankare, på (engelska anchor).

Labora&on 1 Introduk&on &ll utvecklingsmiljön övningar/uppgi<er

TDP005. Föreläsning 2. Filip Strömbäck

Telia Connect för Windows

DB, DATA, LOGIC, EXPOSURE (WEB)

Appar med ryggrad. Introduktion till JavaScriptramverket Backbone

Python. Datatyper. Mer om datatyper. Heltal - 3 Flyttal - 2,456 Listor - [1,2,3,4] Strängar - spam!

PHP - Fortsättning. PHP och MySQL

Schenker Privpak AB Telefon VAT Nr. SE Schenker ABs ansvarsbestämmelser, identiska med Box 905 Faxnr Säte: Borås

Manuell installation av SQL Server 2008 R2 Express SP2 fo r SSF Timing

Utförande: I exemplet så kommer vi att utgå från att man gör laborationen i en Virtuell miljö (Virtualbox).

Monitor Pro V7 SCADA. Kom-igång med kommunikation Unitelway TCP/IP

Öppna data på Gävle kommun

Datakommunika,on på Internet

Det här dokumentet är till för att ge en översikt över ASP.NET MVC samt hur WCF Services används från.net applikationer.

Bakom kulisserna. SMHI webservices. Infrastruktur och säkerhetslösningar Demonstration av webservices

Exemple på Tentauppgifter Webbprogrammering

ITK:P2 F1. Hemsidor med HTML HTML. FTP, HTTP, HTML, XML och XHTML

Extern åtkomst Manual för leverantör

Installationsmanual ImageBank 2

FactoryCast HMI. Premium & Quantum PLC. MySQL Server och FactoryCast HMI databastjänst

Webbprogrammering. Sahand Sadjadee

Webbserver och HTML-sidor i E1000 KI

IP-baserade program. Telnet

TDDD80 Mobila och sociala applikationer. Kursintroduktion

MONA-handledning. 1. Inloggning. Version 2 1(5) Användarhandledning - UTKAST MONA-support. 1. Inloggning 2. Användning 3.

Åtkomst till Landstingets nät via Internet

INTRODUKTION TILL ANGULAR JS

JobOffice SQL databas på server

TDDD80 Mobila och sociala applikationer. Kursintroduktion

Python. Python är, som Scheme, ett interpreterat språk men det finns kompilatorer för Python.

Transkript:

Server-kod

2017-01-16 2 Översikt Flask HTTP och REST Requests-biblioteket JSON PyCharm Git Informationssökningstips

2017-01-15 3 Klient Klient Klient Labb 4-8 (Android) Server Databas Labb 1-4 (server)

2017-01-15 4 Servera (tillhandahålla) data till klienter REST (REpresentational State Transfer) Restful design Tillståndslöst (varje anrop är oberoende av förra) Tillstånd kodas och skickas med vid anrop (t.ex. tillståndet inloggad, dvs. access-token, del i anropet) Kommunikation via JSON, dvs. strukturerade strängar

Flask

2017-01-16 6 Utvecklingsmiljö Mikro-ramverk (baserat på Python) IDE (Integrated Development Environment): PyCharm Virtual environment Sätt att låta olika projekt använda olika pythonversioner, och olika bibliotek T.ex. kan nerladdade bibliotek för inloggning etc. kräva en viss python-version Läs mer på http://docs.pythonguide.org/en/latest/dev/virtualenvs/

2017-01-16 7 Virtual environment Installera >> cd my_project_folder >> virtualenv -p /usr/bin/python-3.4 my_venv_3.4 (En mapp skapas) Aktivera (innan man kör igång med kodning) >> source my_venv_3.4/bin/activate Installera Flask (my_venv_3.4) >> pip install flask

2017-01-16 8 Flask Quickstart Flask: http://flask.pocoo.org/docs/quickstart/#quickstart Tutorial för Flask: http://flask.pocoo.org/docs/tutorial/#tutorial Flask + SQLAlchemy: http://flask.pocoo.org/docs/0.10/patterns/sqlalchemy / Flask appcontext (för att hålla reda på databasuppkoppling): http://flask.pocoo.org/docs/appcontext/

2017-01-16 9 Installation av andra bibliotek Om inte redan aktiverad: >> source /my_venv/bin/activate Sedan (my_venv) >> pip install requests

HTTP

2017-01-15 11 HTTP HyperText Transfer Protocol Kommunikationsprotokoll Kan användas för att formattera och skicka websidor Kan även användas till att skicka data T.ex. formatterade text-strängar Ex. { bok-titel : Krig och fred, pris : 420 kapitel : [ ] }

2017-01-15 12 HTTP header Definierar operations-parametrar (metadata) Faktiska data ska skickas i body Antingen html-sida, eller JSON el. XML data

2017-01-15 13 Exempel på anrop från klient (request) GET http://www.amazon.com/index.html HTTP/1.1 Host: www.amazon.com Connection: Close (blank line)

2017-01-16 14 Svar från server HTTP/1.1 302 Found Transfer-Encoding: chunked Date: Fri, 27 Feb 2004 09:27:35 GMT Content-Type: text/html; charset=iso-8859-1 Connection: close Server: Stronghold/2.4.2 Apache/1.3.6 C2NetEU/2412 (Unix) Set-Cookie: skin=; domain=.amazon.com; path=/; expires=wed, 01-Aug-01 12:00:00 GMT Connection: close Location: http://www.amazon.com:80/exec/obidos/subst/home/home.html Via: 1.1 xproxy (NetCache NetApp/5.3.1R4D5) ed <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> <HTML><HEAD> <TITLE>302 Found</TITLE> </HEAD><BODY> <H1>Found</H1> The document has moved <A HREF="http://www.amazon.com:80/exec/obidos/subst/home/home.html"> here</a>.<p> </BODY> </HTML> 0

2017-01-15 15 Request Vi har inte klienten ännu, utan kommer att anropa vår server-kod från terminalfönster Använder biblioteket Requests, dvs. >> source /my_venv/bin/activate (my_venv) >> pip install requests

2017-01-15 16 Snabbtesta http anrop på egen maskin Kör server-koden på localhost http://127.0.0.1:5000 Högt portnummer för att undvika krock (Läs mer om reserverade IP-nummer, etc. http://www.comptechdoc.org/independent/networki ng/guide/netaddressing.html)

2017-01-15 17 Request Två processer Testar lokalt (samma dator): använd två olika terminal för att starta de två processerna T.ex. PyCharm run (server) + PyCharms terminal (requests)

2017-01-16 18 Request och session Server-sidan Bearbetar ett request i taget Potentiellt (parallellt) från flera användare Klienterna (session) måste hållas isär Variabler/tillstånd som ska vara längre lagras på klient-sidan T.ex. att användaren är aktiv/inloggad

2017-01-15 19 Anrop (request) till server Anrop URL_root = 'http://localhost:5000 resp_val = requests.get(url_root + '/food_menu/') Anrop (request) från klienter (Android-syntax) HttpGet req = new HttpGet( /food_menu ); response = client.execute(req);

2017-01-15 20 På server-sidan Tas emot av server-kod (Flask-syntax) @app.route('/food_menu', methods=[ GET']) def fetch_menu(): if request.method == 'POST : abort(405) #method not allowed else: menu = return jsonify(menu), 200 Behövs inte, testas automatiskt pga methods= 200 behövs inte, 200 skickas automatiskt

2017-01-15 21 Några meddelanden från server https://www.w3.org/protocols/rfc2616/rfc2616- sec10.html 2xx success 400 bad request (syntaxfel på anropet?) 404 fel URL / ingen sån resurs? 405 ingen metod angivet i anropet / matchar inte tillåtna metoder för denna route i server-koden?

2017-01-15 22 Vanliga request methods http://www.w3schools.com/tags/ref_httpmethods.a sp GET Fetch data POST Ask process at URL to upload enclosed data DELETE Deletes the specified resource HEAD Same as GET but returns only HTTP headers and no document body

2017-01-15 23 Andra http request methods http://www.w3schools.com/tags/ref_httpmethods.a sp PUT Upload data (in request body) to the specified URI (~ file upload ) OPTIONS Returns the HTTP methods that the server supports CONNECT Converts the request connection to a transparent TCP/IP tunnel

2017-01-15 24 Response Man kan bygga upp en response steg för steg Men, oftast behövs bara en enkel return i Flask from flask import Flask, jsonify app = Flask( name ) methods=[ GET ] är @app.route('/') default def hello_world(): return jsonify('hello, World! ) hamnar i body

JSON

2017-01-15 26 Server - klient kommunikation mha JSON JSON (JavaScript Object Notation) En samling namn-värde par En sorterad lista av värden

2017-01-15 27 JSON (JavaScript Object Notation) Plattade, dvs. serialiserade (JavaScript) objekt Strukturerade data plattas till en sträng så att den kan skickas över nätet (som ju är seriell) Läs mer på t.ex. http://www.w3schools.com/json/

2017-01-15 28 JSON exempel {"menu": { "id": "file", "value": "File", "popup": { "menuitem": [ {"value": "New", "onclick": "CreateNewDoc()"}, {"value": "Open", "onclick": "OpenDoc()"}, {"value": "Close", "onclick": "CloseDoc()"} ] } }} http://json.org/example.html

2017-01-15 29 Till/från JSON Sever-sidan Flask.jsonify(**dict), se t.ex. http://stackoverflow.com/questions/13081532/how -to-return-json-using-flask-web-framework Klient-sidan (Android/java) är gson ett populärt bibliotek reader = new InputStreamReader( ); Person p = gson.fromjson(reader, Person.class); Eller JSONObject

Versionshantering

2017-01-15 31 DVCS Distributed Version Control System Git distribuerat, dvs. finns lokalt på varje maskin

2017-01-15 32 Initiera git-repo

2017-01-15 33 Sätta upp ssh-nyckel Gitlab använder säker kommunikation till din dator mha SSH-nycklar Generera ssh-nyckel på din dator Lägg till publika myckeln til Gitlab Läs mer på: https://docs.gitlab.com/ce/ssh/readme.html

2017-01-15 34

2017-01-15 35

2017-01-15 36 Git arbetsflöde (lokalt på egen dator) Välj vilka filer som ska sparas i repot (läggs till i intern index, dvs. stage:as) >> git add minfil Spara lokal version >> git commit minfil m refaktorerat koden Om ni inte skriver kommentar, hamnar ni i vimeditorn (för att skriva längre kommentar)

2017-01-15 37 Ifall ni hamnat i vim-editorn Skriv en commit message Sedan, spara och gå ur, med någon av dessa kommandon: Esc :wq (write + quit) Esc :x (save + exit) Esc ZZ

2017-01-15 38 Remote repo (i Gitlab) Dra ner senaste från remote repo (+ försök merga) >> git pull origin Tänk på att konflikter kan ha uppstått i koden om du jobbar i team Måste då kanske göra en manuell merge + testning före en push Lägg upp i remote repo >> git push u origin master

2017-01-15 40 Distribuerat arbetsflöde Varje utvecklare ansvarig för att hålla gemensamt repo körbar Små arbetsbitar Jobba mot eget lokalt repo När klar (max några timmars arbete) Dra ner senaste kod från gemensamt repo (remote) Merge och fixa conflicts Pusha all kod (nu mergad och fullt testad) till remote

2017-01-15 41 Bra länkar Git tänk https://git-scm.com/book/en/v2/distributed-git- Distributed-Workflows https://www.youtube.com/watch?v=v40b3exbm 0c Git kommandon https://www.youtube.com/watch?v=y9xzqo1n_ 7c

Informationssökning: tips

2017-01-15 43 Tar tid att hitta de rätta söktermerna Arbetsflöde: Skriv in söktermer Ögna igenom första sidan, läs bara Googles sammanfattning Klicka om intressant sammanfattning Efter 2-5 klickar Fick du svar på din fråga Nej prova med andra söktermer

rita.kovordanyi@liu.se www.liu.se