Microsemi AN1256 Web Бағдарламашылар қосымшасы
Кіріспе
JSON (JavaScript Object Notation) ашық стандартты болып табылады file деректер алмасу үшін адам оқи алатын мәтінді пайдаланатын пішім. Бұл асинхронды браузер/сервер байланысы үшін пайдаланылатын жалпы деректер пішімі.
Жаңасы үшін web бет дизайны, JSON пішімі бастапқы AJAX стилін ауыстыруы мүмкін. JSON көмегімен AJAX-пен салыстырыңыз Web жүзеге асыру оңайырақ және қарапайым. Әзірлеуші тек назар аударуы керек web бет дизайны және Web өңдегішті іске асыруды өткізіп жіберуге болады, себебі JSON қатынас әдісі әрқайсысында әлдеқашан қолдау көрсетіледі WebStaX бағдарламалық модульдері.
Бұл құжат әзірлеуі қажет бағдарламалық жасақтама инженеріне арналған бағдарламашыларға арналған нұсқаулықты көрсетеді Web JSON арқылы бет. Егжей-тегжейлі процедуралар және мысampСондай-ақ келесі бөлімдерге енгізілген.
JSON деректеріне қол жеткізу ағыны
Біттіview
Міне, HTTP қосылымы клиенттен (браузерден) іске қосылатын JSON деректеріне қол жеткізу ағыны. HTML кестесі серверден (DUT) алынған JOSN деректеріне сәйкес динамикалық түрде жасалады.
1-сурет. Клиент пен сервер арасындағы қатынас ағыны
JSON деректерін сұрау/жауап беру
JSON сұрау пакеті HTTP сұрауын жариялау әдісіне негізделген және мазмұн MSCC JSON пішіміне сай болуы керек.
- JSON синтаксисін сұрау:{"әдіс":" ”,”параметрлері”:[ ], “id:”jsonrpc”}
- Жауап JSON синтаксисі: {"қате": ,"нәтиже": , “id:”jsonrpc”}
Келесі суреттер браузер мен DUT арасындағы JSON мазмұнын көрсетеді.
2-сурет. Клиенттен HTTP сұрауының суреті
3-сурет. Серверден HTTP жауабының суреті
MSCC JSON спецификациясы
Әдіс, параметр, сипаттама және т.б. қоса, толық JSON ақпаратын алу үшін “http://” теріңіз. /json_spec” браузеріңіздің мекенжай жолағында. JSON әдісінің атауы «jsonRpc.status.introspection.specific.inventory.get» арқылы басқа кіру әдісі бар, ол белгілі бір әдіс үшін пайдаланылады.
4-сурет. JSON спецификациясының суреті web бет
Web шеңбер
The Web шеңберіндегі WebStaX бағдарламалық құралы ашық бастапқы MooTools бағдарламасына негізделген. Бұл MIT лицензиясы бар JavaScript утилиталарының жинағы. (http://mootools.net/license.txt) Мәзір жолағы және көпшілігі web беттер рамкаға негізделген. AJAX және JSON алгоритмдері оның утилиталарында біріктірілген.
Сонымен қатар, WebStaX бағдарламалық құралы JSON үшін пайдалы басқа утилиталарды қамтамасыз етеді web бет дизайны.
- json.js – JSON синтаксисі бар динамикалық деректерді жіберу/қабылдау үшін for пайдаланыңыз.
- dynforms.js – HTML кестесін динамикалық түрде жасау үшін пайдаланыңыз.
- validate.js – HTML пішінін тексеру үшін пайдаланыңыз.
Толық JavaScript кітапханалары бастапқы ағаш каталогының астында орналасқан: webstax2\ vtss_appl\web\html\lib.
JSON нұсқаулығы Web бет дизайны
Бұл бөлім a жобалау жолын бағыттайды web MSCC JavaScript кітапханаларына негізделген бет. Біз Айнаны жаһандық конфигурацияланған пайдаланамыз web бұрынғы ретінде бетampосында. Асинхронды байланыс HTTP JSON қатынас әдісіне негізделген және барлық жаһандық конфигурацияланған параметрлер бір динамикалық HTML кестесінде тізімделген.
The web бет орналасуы төменде берілген және толық бастапқы код бастапқы ағаш каталогының астында орналасқан: webstax2\vtss_appl\mirror\html\mirror_ctrl.htm. Типтік алу үшін web беттерге сілтеме, қосымша бөлімін қараңыз.
Mirror&RMirror конфигурация кестесі
5-сурет. Exampжаһандық конфигурацияланған кестенің le
Өңдеу Web бет
HTML тақырыбы
HTML-ге қажет JS кітапханаларын қосыңыз tag.
Динамикалық кесте ресурсын инициализациялаңыз
- HTML құжаты дайын болғанда, динамикалық кесте ресурсын инициализациялау үшін DynamicTable() шақырыңыз.
- DynamicTable() JSON деректерін алғаннан кейін динамикалық кестені жасау үшін пайдаланылады.
- Содан кейін ол JSON пәрмен ағынын бастау үшін requestUpdate шақырады.
- window.addEvent('doready', function() {
- // JSON деректерін қабылдау/беру үшін кесте денесі бар пішінді жасаңыз
- myDynamicTable = жаңа DynamicTable («myTableContent», «config»,»plusRowCtrlBar»);
4 - requestUpdate();
- });
JSON деректерін сұрау/жауап беру
- HTML құжаты дайын болғанда, конфигурацияланған сеанстар туралы ақпаратты алу үшін “mirror.config.session.get” JSON сұрауын жіберу үшін requestJsonDoc() пайдаланыңыз.
- “mirror.capabilities.get” үшін JSON деректері алынғаннан кейін, requestUpdate() кері шақыру функциясы өңделеді. Содан кейін requestUpdate функциясы ағымдағы конфигурацияны алу үшін «mirror.config.session.get» деп атайды. Ағымдағы конфигурация қабылданған кезде, көрсетілетін кестені құру үшін processUpdate функциясы шақырылады.
- сұрау жаңарту() функциясы
- {
- // Кесте мазмұнын қалпына келтіру
- myDynamicTable.restore();
5 - // Бұл кесте екі JSON деректері.
- requestJsonDoc(“mirror.config.session.get”, нөл, processUpdate, “config”);
- }
Алынған JSON деректерін өңдеңіз
- processUpdate() функциясы JSON деректерін алғаннан кейін динамикалық кестені орналастыру үшін пайдаланылады.
- addRows() кесте жолдарын қосу үшін пайдаланылады. myDynamicTable.update() орналасуы
Кесте жолдарындағы деректерге сәйкес HTML кестесі.
- processUpdate функциясы(recv_json, атауы)
- {
- // Ешқандай деректер алынбаса, процесті елемеу
- егер (!recv_json) {
- ескерту («Динамикалық деректерді алу сәтсіз аяқталды.»);
- қайтару;
- }
- // Алынған JSON деректерін сақтаңыз
- myDynamicTable.saveRecvJson («конфигурация», recv_json);
- // Кесте жолдарын қосу
- var table_rows = addRows(recv_json);
- myDynamicTable.addRows(кесте_жолдары);
- // Осы динамикалық кестені жаңартыңыз
- myDynamicTable.update();
- // Таймерді жаңарту
- var autorefresh = document.getElementById(“autorrefresh”);
- егер (авторды жаңарту && автожаңғырту.белгіленген) {
- егер (таймер идентификаторы) {
- clearTimeout (таймер идентификаторы);
- }
- timerID = setTimeout('requestUpdate()', settingsRefreshInterval());
- }
- }
Кесте жолдарын қосыңыз
- addRows() функциясында кесте жолындағы әрбір жаһандық конфигурацияланған параметрді толтыру үшін JSON пішімін пайдаланамыз.
- Барлық HTML өрістері JSON массивінде («кесте_жолдары») тізімделген және кесте өрісінің синтаксисі төменде берілген.
Синтаксис:
кесте_жолдары:[ , , … ] : { , , … }
: {“түрі”: , "парамдар":[ , , …, ]}
- Бұл жағдайда әрбір жолда бес өріс бар: «Сеанс идентификаторы», «Режим», «Түрі», «VLAN идентификаторы» және «Рефлектор порты».ampле,
Сеанс идентификаторы (Атау өрісі: int32_t) | 1 (Айна сеансының идентификаторы) |
Режим (Атау өрісі: vtss_bool_t) | рас (Айна сеансы қосылған дегенді білдіреді) |
Түр (Атау өрісі: нөмірлеу
{айна, rMirrorSource, rMirrorDestination} |
RMirror көзі (бұл қашықтағы айна сеансының көзі |
VLAN идентификаторы (Атау өрісі: uint16_t) | 200 (шағылыстыру үшін пайдаланылатын vlan) |
Рефлектор порты (Атау өрісі: vtss_ifindex_t) | Gi 1/1 (Айналанған трафик жіберілетін порт |
- myDynamicTable.addRows() JSON деректерін HTML пішіміне түрлендіреді және HTML кестесін шығарады.
- addRow функциясы(кілт, val)
- {
- var none_map_val = 0xFFFFFFFF, none_map_text = “Жоқ”, none_interface_text = “NONE”;
- var tunnel_mode_suffix = val.TunnelMode == “useglobal” ? ” (” + oTTunnelMode[oVTunnelMode.indexOf(global_conf.tunnelMode)] + “)” : “”;
- var row = {өрістер:[
- {түрі:”сілтеме”, параметрлер:[“cr”, “mirror.htm?session_id=” + кілт, кілт]},
- {түрі:”мәтін”, параметрлер:[oTMode[oVMode.indexOf(val.Mode)], “c”]},
- {түрі:”мәтін”, параметрлер:[oTType[oVType.indexOf(val.Type)], “c”]},
- {түрі:”мәтін”, параметрлер:[val.Type == “айна” ? «-»:
val.RMirrorVlan, “c”]}, - {түрі:”мәтін”, параметрлері:[val.Type == “rMirrorSource” ?
val.ReflectorPort : “-” , “c”]} - ]};
- қайтару жолы;
- }
- addRows функциясы(recv_json)
- {
- var row, empty_colspan = 7;
- var table_rows = new Array();
- // Кесте тақырыбын қосу
- addHeader(кесте_жолдары);
- // Жалғыз жолды қосу
- Object.each(recv_json, функция(жазба) {
- table_rows.push(addRow(жазба.кілт, жазба.вал));
- });
- кесте_жолдарын қайтару;
- }
Web анықтама беті
үшін web анықтамалық бет дизайны, анықтама сипаттамасы JSON спецификациясына сілтеме жасай алады, бұл сипаттама мәтіні JSON шығысымен сәйкес келуі және артық сипаттамаларды азайтуға көмектеседі. Мысалыample мұнда dhcp6 реле конфигурациясынан алынған.
Дереккөздегі гиперсілтеме file
Көмек тағайындаңыз file оның көзінде орналасуы file HTML tag. Тұрақты айнымалы атауы «анықтама_бет» үшін пайдаланылады web анықтама бетін тағайындау.
- // Анықтама беті
- var help_page = “/help/help_xxx.htm”;
JSON спецификациясынан HTML өрісінің сипаттамасын жаңартыңыз
- Қолдану немесе HTML tag HTML кестесінің сипаттамасын жариялау және бірегей идентификаторды беру tag.
- HTML құжаты дайын болғанда, толық JSON спецификациясын алу үшін loadXMLDoc() қызметіне қоңырау шалыңыз немесе JSON әдісі атауы бойынша арнайы әдіс сипаттамасын «jsonRpc.status.introspection.specific.inventory.get» алыңыз.
- processTableDesc() кесте сипаттамасын жаңарту үшін пайдаланылады және processUpdate() кесте параметрінің сипаттамасын жаңарту үшін пайдаланылады.
- processUpdate() ішінде нақты элемент атауларына сәйкес келетін JSON элементтерін жаңарту үшін updateTableParamsDesc() шақырыңыз.
- жаңартыңыз немесе tag элемент сипаттамасына сәйкес ішкі HTML.
- /* HTML сипаттама өрістерін жаңарту */
- function processTableDesc(req) {
- егер (!req.responseText) {
- қайтару;
- }
- var json_spec = JSON.decode(req.responseText);
- // Кесте сипаттамасын жаңарту
- $(“TableDesc”).innerHTML = getJsonSpecElement(json_spec, “groups”, “dhcp6_relay.config.vlan”).сипаттама;
- }
- /* HTML кестесі параметрінің сипаттамасын жаңарту */
- function processUpdate(recv_json) {
- // Кесте параметрінің сипаттамасын жаңарту
- var param_names = [
- {
- «бүркеншік ат»: «интерфейс»,
- “түрі”: “vtss_ifindex_t”,
- “атауы”: “vlanInterface”,
- “суффикс”: “.”
- },
- {
- «бүркеншік ат»: «Релелік интерфейс»,
- “түрі”: “vtss_ifindex_t”,
- “атауы”: “relayVlanInterface”,
- «суффикс»: «. Өткізу үшін пайдаланылатын интерфейстің идентификаторы».
- },
- {
- «бүркеншік ат»: «Релай тағайындау орны»,
- “түрі”: “mesa_ipv6_t”,
- «атауы»: «релелік_тағайындау»,
- «суффикс»: «. Сұраулар жіберілетін DHCPv6 серверінің IPv6 мекенжайы. 'ff05::1:3' әдепкі мәні 'кез келген DHCP серверін' білдіреді.”
- }
- ];
- updateTableParamsDesc(“TableParamsDesc”, recv_json, “dhcp6_relay.config.vlan.get”, param_names);
- }
- /* JSON спецификациясын алу */
- window.addEvent('doready', функция () {
- loadXMLDoc(“/json_spec”, processTableDesc);
- requestJsonDoc(“jsonRpc.status.introspection.specific.inventory.get”, “dhcp6_relay.config.vlan”, processUpdate);
- });
Мәзір жолағындағы гиперсілтеме
- Мәзір жолағының HTML бастапқы коды мына жерден жасалады file webstax2\vtss_appl\web\ menu_default.cxx.
- Мұндағы элементтерді өңдеңіз file үшін Web беттің гиперсілтемесі.
- #егер анықталған(VTSS_SW_OPTION_DHCP6_RELAY)
- ITEM(“Relay,dhcp6_relay.htm”);
- #endif //VTSS_SW_OPTION_DHCP6_RELAY
ЕСКЕРТУ
Мәзір жолағындағы топ деңгейін анықтау үшін пайдаланылатын ITEM("") ішіндегі бос орын таңбасының санына назар аударыңыз. Бұл жағдайда барлығы web беттер «DHCPv6» тобының астында.
Сурет 6. Мысалыampжаһандық конфигурацияланған кестенің le
Қосымша
Типтік web беттер
Бірнеше типтік бар web беттерді анықтамалық дизайн үшін пайдалануға болады. Бір қосымша бұрынғыampМұнда vtss_appl\mirror\html\mirror.htm ішінде табылған бір айна сеансының конфигурациясы көрсетіледі.
The web бет бір айна сеансы үшін егжей-тегжейлі конфигурацияны қамтамасыз етеді. Барлық конфигурацияланған параметрлер тізімде көрсетілген.
- Ағымдағы конфигурацияны қолдану үшін «Сақтау» түймесін басыңыз.
- Ағымдағы конфигурацияны қалпына келтіру үшін «Қалпына келтіру» түймесін басыңыз.
- Жоғарыға оралу үшін «Болдырмау» түймесін басыңызview айна сеанстары
Mirror&RMirror конфигурациясы
Ғаламдық параметрлер
Бастапқы VLAN(лар) конфигурациясы
Порт конфигурациясы
7-сурет. Exampайна сеансының егжей-тегжейлі конфигурациясы
«Сақтау», «Қалпына келтіру» және «Болдырмау» түймелері html коды арқылы қосылады:
JSON пәрмен ағыны
Бұл бет екі қадамдық пәрмен ағынын қажет етеді:
- Алдымен «mirror.capabilities.get» әдісімен құрылғының мүмкіндіктерін алу керек. Мүмкіндіктер өзгермейді және тек бір рет оқу керек.
- Содан кейін ол «mirror.config.session.get», «port.status.get» әдістерін пайдаланып және «topo.config.stacking.get» жинақталған жағдайда құрылғының ағымдағы конфигурациясын алуы керек.
«mirror.capabilities.get» шақыруы «domready» оқиғасы арқылы басталады және нәтиже requestUpdate функциясы арқылы өңдеуге теңшеледі.
requestUpdate «mirror.config.session.get» қоңырауын бастайды,
«port.status.get» және жинақталған жағдайда «topo.config.stacking.get» және осы шақырулардың нәтижелері readyUpdate функциясымен өңдеуге конфигурацияланады.
ReaderUpdate функциясы барлық нәтижелерді жинайды және барлығы алынған кезде ғана ол процессUpdate функциясын шақырады, ол кестеде көрсетілген кестелерді құрастырады. web.
Анықтамалар
- Wikipedia JavaScript https://en.wikipedia.org/wiki/JavaScript
- JSON https://www.json.org/
- MoonTools https://mootools.net/
Құжаттар / Ресурстар
![]() |
Microsemi AN1256 Web Бағдарламашылар қосымшасы [pdf] Пайдаланушы нұсқаулығы AN1256, AN1256 Web Бағдарламашылар қосымшасы, Web Бағдарламашылар қолданбасы, қолданбасы |