Microsemi AN1256 Web Programmeerijate rakendus
Sissejuhatus
JSON (JavaScript Object Notation) on avatud standard file vorming, mis kasutab andmete vahetamiseks inimloetavat teksti. See on levinud andmevorming, mida kasutatakse brauseri/serveri asünkroonses suhtluses.
Uue jaoks web lehe kujundus, JSON-vorming võib asendada algse AJAX-stiili. Võrrelge AJAX-iga, JSON-i kasutamine muudab Web rakendamine on lihtsam ja lihtsam. Arendaja peab ainult keskenduma web lehe kujundus ja Web käitleja juurutamise võib ära jätta, kuna JSON-juurdepääsumeetod on juba toetatud WebStaX tarkvara moodulid.
See dokument sisaldab programmeerijate juhendit tarkvarainseneridele, kes peavad selle välja töötama Web leht JSON-i kaudu. Üksikasjalikud protseduurid ja ntampka järgmistes jaotistes.
JSON-andmete juurdepääsuvoog
Läbiview
Siin on JSON-i andmete juurdepääsuvoog, mille HTTP-ühendus käivitatakse kliendist (brauserist). HTML-tabel luuakse dünaamiliselt vastavalt serveri (DUT) poolelt vastuvõetud JOSN-andmetele.
Joonis 1. Juurdepääsuvoog kliendi ja serveri vahel
JSON-andmete taotlemine/vastamine
JSON-i päringupakett põhineb HTTP-päringu postitamismeetodil ja sisu peab järgima MSCC JSON-vormingut.
- Taotlege JSON-i süntaksit:{"meetod":" ","params":[ ], "id:"jsonrpc"}
- Vastuse JSON-i süntaks: {"viga": ,"tulemus": , "id:"jsonrpc"}
Järgmised hetktõmmised näitavad JSON-i sisu brauseri ja DUT-i vahel.
Joonis 2. Kliendi HTTP-päringu hetktõmmis
Joonis 3. Serveri HTTP vastuse hetktõmmis
MSCC JSON spetsifikatsioon
Täieliku JSON-teabe, sealhulgas meetodi, parameetri, kirjelduse jms hankimiseks tippige „http:// /json_spec” brauseri aadressiribal. JSON-i meetodi nime "jsonRpc.status.introspection.specific.inventory.get" kaudu on veel üks juurdepääsumeetod, seda kasutatakse konkreetse meetodi jaoks.
Joonis 4. JSON-i spetsifikatsiooni hetktõmmis web lehel
Web raamistik
The Web raamistik sisse WebStaX tarkvara põhineb avatud lähtekoodiga MooToolsil. See on MIT-litsentsiga JavaScripti utiliitide kogu. (http://mootools.net/license.txt) Menüüriba ja enamik web lehed põhinevad raamistikul. Nii AJAX kui ka JSON-algoritm on selle utiliitidesse juba integreeritud.
Pealegi, WebStaX-tarkvara pakub muid JSON-i jaoks kasulikke utiliite web lehe kujundus.
- json.js – Kasutage dünaamiliste andmete edastamiseks/vastuvõtmiseks JSON-i süntaksiga.
- dynforms.js – Kasutage HTML-tabeli dünaamiliseks loomiseks.
- validate.js – Kasutage HTML-vormingu kinnitamiseks.
Täielikud JavaScripti teegid asuvad lähtepuu kataloogi all: webstax2\ vtss_appl\web\html\lib.
JSON-i juhis Web lehe kujundus
See jaotis juhendab, kuidas kujundada a web leht, mis põhineb MSCC JavaScripti raamatukogudel. Kasutame globaalset konfiguratsiooni Mirror web lehekülg nagu endineample siin. Asünkroonne suhtlus põhineb HTTP JSON-juurdepääsumeetodil ja kõik globaalsed konfigureeritud parameetrid on loetletud ühes dünaamilises HTML-i tabelis.
The web lehe paigutus on loetletud allpool ja täielik lähtekood asub lähtepuu kataloogi all: webstax2\vtss_appl\mirror\html\mirror_ctrl.htm. Et saada tüüpilisemaks web lehekülgede viide, vt lisa jaotist.
Peegli ja RMirror kinnitustabel
Joonis 5. Exampglobaalse konfigureeritud tabeli le
Muuda Web lehel
HTML-i päis
Lisage HTML-i vajalikud JS-i teegid tag.
Initsialiseerige dünaamilise tabeli ressurss
- Kui HTML-dokument on valmis, kutsuge dünaamilise tabeli ressursi lähtestamiseks välja DynamicTable().
- DynamicTable() kasutatakse dünaamilise tabeli loomiseks pärast JSON-andmete vastuvõtmist.
- Seejärel kutsub see JSON-käsuvoo käivitamiseks esile rakenduse requestUpdate.
- window.addEvent('domready', function() {
- // Looge tabeli kehaosaga vorm JSON-andmete vastuvõtmiseks/edastamiseks
- myDynamicTable = uus dünaamiline tabel("myTableContent", "config","plusRowCtrlBar");
4 - requestUpdate();
- });
JSON-andmete taotlemine/vastamine
- Kui HTML-dokument on valmis, kasutage konfigureeritud seansside kohta teabe saamiseks JSON-i päringu "mirror.config.session.get" saatmiseks käsku requestJsonDoc().
- Pärast „mirror.capabilities.get” JSON-andmete vastuvõtmist töödeldakse tagasihelistamisfunktsiooni requestUpdate(). Funktsioon requestUpdate kutsub seejärel praeguse konfiguratsiooni hankimiseks "mirror.config.session.get". Kui praegune konfiguratsioon on vastu võetud, kutsutakse kuvatava tabeli koostamiseks funktsioon processUpdate.
- funktsioon requestUpdate()
- {
- // Tabeli sisu taastamine
- myDynamicTable.restore();
5 - // See tabel kaks JSON-i andmeid.
- requestJsonDoc("mirror.config.session.get", null, processUpdate, "config");
- }
Töötle vastuvõetud JSON-andmeid
- Funktsiooni processUpdate() kasutatakse dünaamilise tabeli paigutuseks pärast JSON-andmete vastuvõtmist.
- AddRows() kasutatakse tabeli ridade lisamiseks. myDynamicTable.update() paigutus
HTML-tabel vastavalt tabeliridade andmetele.
- funktsioon processUpdate(recv_json, nimi)
- {
- // Ignoreeri protsessi, kui andmeid ei saada
- if (!recv_json) {
- alert ("Dünaamiliste andmete hankimine nurjus.");
- tagastamine;
- }
- // Salvestage saadud JSON-andmed
- myDynamicTable.saveRecvJson(“config”, recv_json);
- // Tabeli ridade lisamine
- var tabeli_read = addRows(recv_json);
- myDynamicTable.addRows(tabeli_read);
- // Värskendage seda dünaamilist tabelit
- myDynamicTable.update();
- // Värskenda taimer
- var autorefresh = document.getElementById(“autorefresh”);
- if (autorefresh && autorefresh.checked) {
- if (taimerID) {
- clearTimeout(taimeri ID);
- }
- timerID = setTimeout('requestUpdate()', settingsRefreshInterval());
- }
- }
Lisa tabeli ridu
- Funktsioonis addRows() kasutame JSON-vormingut, et täita tabelireal iga globaalne konfigureeritud parameeter.
- Kõik HTML-i väljad on loetletud JSON-massiivis ("table_rows") ja tabelivälja süntaks on allpool.
Süntaks:
tabeli_read:[ , , … ] : { , , … }
: {"tüüp": , "parameetrid":[ , , …, ]}
- Sel juhul on igal real viis välja: "Session ID", "Mode", "Type", "VLAN ID" ja "Reflector Port" Näiteksample,
Seansi ID (Nimeväli: int32_t) | 1 (Peegelseansi ID) |
Režiim (Nimeväli: vtss_bool_t) | tõsi (Tähendab, peegelseanss on lubatud) |
Tüüp (Nimeväli: loendus {peegel, rMirrorSource, rMirrorDestination} | RMirror allikas (see on kaugpeegelseansi allikas |
VLAN-i ID (Nimeväli: uint16_t) | 200 (peegeldamiseks kasutatav vlan) |
Helkuri port (Nimeväli: vtss_ifindex_t) | Gi 1/1 (Port, kuhu peegeldatud liiklus saadetakse |
- MyDynamicTable.addRows() teisendab JSON-i andmed HTML-vormingusse ja väljastab HTML-tabeli.
- funktsioon addRow(klahv, val)
- {
- var none_map_val = 0xFFFFFFFF, none_map_text = "Puudub", none_interface_text = "POLE";
- var tunnel_mode_suffix = val.TunnelMode == "useglobal" ? ” (” + oTTunnelMode[oVTunnelMode.indexOf(global_conf.tunnelMode)] + “)” : “”;
- var rida = {väljad:[
- {type:"link", params:["cr", "mirror.htm?session_id=" + võti, võti]},
- {type:"text", params:[oTMode[oVMode.indexOf(val.Mode)], "c"]},
- {type:"text", params:[oTType[oVType.indexOf(val.Type)], "c"]},
- {type:”text”, params:[val.Type == “peegel” ? "-":
val.RMirrorVlan, "c"]}, - {type:”text”, params:[val.Type == “rMirrorSource” ?
val.ReflectorPort : "-" , "c"]} - ]};
- tagastusrida;
- }
- funktsioon addRows(recv_json)
- {
- var rida, tühi_colspan = 7;
- var tabeli_read = new Massiiv();
- // Lisa tabeli päis
- addHeader(tabeli_read);
- // Lisage üks rida
- Object.each(recv_json, function(rekord) {
- tabel_read.push(lisaRida(kirje.võti, kirje.valik));
- });
- tagasta tabel_read;
- }
Web abileht
jaoks web Abilehe kujundus, spikri kirjeldus võib viidata JSON-i spetsifikatsioonile, et kirjeldustekst on JSON-i väljundiga kooskõlas ja aitab vähendada üleliigseid kirjeldusi. Ntample siin on võetud dhcp6 relee konfiguratsioonist.
Hüperlink allikas file
Määrake abi file asukoht selle allikas file HTML tag. Fikseeritud muutuja nime "help_page" kasutatakse web abilehe ülesanne.
- // Abilehe maagia
- var help_page = "/help/help_xxx.htm";
Värskendage HTML-välja kirjeldust JSON-i spetsifikatsioonist
- Kasutage või HTML tag deklareerida HTML-tabeli kirjeldus ja anda unikaalne ID tag.
- Kui HTML-dokument on valmis, kutsuge kogu JSON-i spetsifikatsiooni saamiseks kutsuma loadXMLDoc() või hankige konkreetse meetodi kirjeldus JSON-i meetodi nimega "jsonRpc.status.introspection.specific.inventory.get".
- ProcessTableDesc() kasutatakse tabeli kirjelduse värskendamiseks ja processUpdate() tabeli parameetri kirjelduse värskendamiseks.
- Funktsioonis processUpdate() kutsuge välja updateTableParamsDesc(), et värskendada JSON-elemente, mis vastavad konkreetsete elementide nimedele.
- Värskendage või tag sisemine HTML vastavalt elemendi kirjeldusele.
- /* HTML-i kirjeldusväljade värskendamine */
- function processTableDesc(req) {
- if (!req.responseText) {
- tagastamine;
- }
- var json_spec = JSON.decode(req.responseText);
- // Tabeli kirjelduse värskendamine
- $(“TableDesc”).innerHTML = getJsonSpecElement(json_spec, “groups”, “dhcp6_relay.config.vlan”).description;
- }
- /* Värskenda HTML tabeli parameetri kirjeldust */
- function processUpdate(recv_json) {
- // Tabeli parameetri kirjelduse värskendamine
- var param_names = [
- {
- "alias": "liides",
- "tüüp": "vtss_ifindex_t",
- "nimi": "vlanInterface",
- "sufiks": "."
- },
- {
- "alias": "Releeliides",
- "tüüp": "vtss_ifindex_t",
- "nimi": "relayVlanInterface",
- "sufiks": ". Edastamise jaoks kasutatava liidese ID.
- },
- {
- "alias": "Relee sihtkoht",
- "tüüp": "mesa_ipv6_t",
- "nimi": "relee_sihtkoht",
- "sufiks": ". DHCPv6 serveri IPv6 aadress, millele päringud edastatakse. Vaikeväärtus "ff05::1:3" tähendab "mis tahes DHCP-serverit".
- }
- ];
- updateTableParamsDesc ("TableParamsDesc", recv_json, "dhcp6_relay.config.vlan.get", param_names);
- }
- /* Hankige JSON-i spetsifikatsioon */
- window.addEvent('domready', function () {
- loadXMLDoc(“/json_spec”, processTableDesc);
- requestJsonDoc(“jsonRpc.status.introspection.specific.inventory.get”, “dhcp6_relay.config.vlan”, processUpdate);
- });
Hüperlink menüüribal
- Menüüriba HTML-i lähtekood on loodud file webstax2\vtss_appl\web\ menüü_default.cxx.
- Muutke selles olevaid üksusi file jaoks Web lehe hüperlink.
- #kui määratud (VTSS_SW_OPTION_DHCP6_RELAY)
- ITEM("Relee,dhcp6_relay.htm");
- #endif //VTSS_SW_OPTION_DHCP6_RELAY
MÄRKUS
Pange tähele, et ITEM(“”) tühikute arv, mida kasutatakse menüüribal rühma taseme määramiseks. Sel juhul kõik web lehed on grupi "DHCPv6" all.
Joonis 6. Näideampglobaalse konfigureeritud tabeli le
Lisa
Tüüpiline web lehekülgi
Neid on mitu tüüpilist web lehekülgi saab kasutada võrdluskujunduse jaoks. Üks täiendav eksampSiin näidatakse ühe peegelseansi konfiguratsiooni, mis asub failis vtss_appl\mirror\html\mirror.htm.
The web leht pakub üksikasjalikku konfiguratsiooni ühe peegelseansi jaoks. Kõik konfigureeritud parameetrid on loetletud.
- Praeguse konfiguratsiooni rakendamiseks klõpsake nuppu "Salvesta".
- Praeguse konfiguratsiooni lähtestamiseks klõpsake nuppu "Lähtesta".
- Lõpu juurde naasmiseks klõpsake nuppu "Tühista".view peegli seanssidest
Peegli ja RMirrori konfiguratsioon
Globaalsed seaded
Allika VLAN(ide) konfiguratsioon
Pordi konfiguratsioon
Joonis 7. Examppeegelseansi üksikasjalik konfiguratsioon
Nupud “Salvesta”, “Lähtesta” ja “Tühista” on lisatud html-koodiga:
JSON-i käsuvoog
See leht nõuab kaheastmelist käsuvoogu:
- Kõigepealt tuleb hankida seadme võimalused meetodiga “mirror.capabilities.get”. Võimalused ei muutu ja neid tuleb lugeda ainult üks kord.
- Seejärel peab see hankima seadme praeguse konfiguratsiooni, kasutades meetodeid “mirror.config.session.get”, “port.status.get” ja virnastamise korral “topo.config.stacking.get”.
Faili "mirror.capabilities.get" väljakutse algatab sündmus "domready" ja tulemus on konfigureeritud nii, et seda käsitleb funktsioon requestUpdate.
PäringUpdate käivitab väljakutse "mirror.config.session.get",
"port.status.get" ja virnastamise korral "topo.config.stacking.get" ning nende kõnede tulemused on konfigureeritud nii, et neid käsitleb funktsioon readyUpdate.
Funktsioon readyUpdate kogub kõik tulemused ja alles siis, kui need on vastu võetud, kutsub ta funktsiooni processUpdate, mis loob tabelid, mida web.
Viited
- Wikipedia JavaScript https://en.wikipedia.org/wiki/JavaScript
- JSON https://www.json.org/
- MoonTools https://mootools.net/
Dokumendid / Ressursid
![]() | Microsemi AN1256 Web Programmeerijate rakendus [pdfKasutusjuhend AN1256, AN1256 Web Programmeerija rakendus, Web Programmeerijate rakendus, rakendus |